เมื่อวานผมลองใช้เวลาว่างๆเปิด Docs ของ Django ดูเล่นๆแล้วไปเจอ CBVs 2 ตัวที่ผมเห็นว่ามันน่าสนใจมากๆครับ ไม่แน่ใจว่าท่านๆจะเคยเห็นกันยังแต่ผมพึ่งเห็นครับ 555
สิ่งที่ผมเจอมี 2 ตัวคือ LoginViews และ LogoutViews ครับ ซึ่งการทำงานของมันก็ตามชื่อเลยครับ มาลองใช้กันก่อนเลยก่อนอื่นก็สร้างโปรเจคขึ้นมาก่อนdjango-admin startproject ชื่อโปรเจค
และเนื่องจากว่าเรามีความจำเป็นต้องใช้งาน database สำหรับเก็บ user ที่ใช้ Login ก็อย่าลืม Migrate database ของเราก่อนครับpython manage.py migrate
จากนั้นเราก็สร้าง user ที่ใช้สำหรับ test มาก่อนpython manage.py createsuperuser
ก่อนอื่นที่จะทำอะไรต่อขอให้มาดูที่ไฟล์ settings.py เพื่อตั้งค่าสำหรับสิ่งที่เราจะใช้กันก่อนครับ
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-js7_1ouiepj-nwhzczqndw.png)
ผมเพิ่มโฟลเดอร์ templates เข้าไปเพื่อที่จะใช้ templates
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-awo4nnuriq42zn0myvk8ig.png)
เลื่อนมาข้างล่างสุดแล้วผมก็เขียน 3 บรรทัดนี้เพิ่มครับ อ้างอิงจาก reference ของ django 1.11
ทีนี้ก็มาเริ่มเขียนกันเลย ผมเริ่มเขียนจาก urls.py ก่อนเพื่อให้ผมรู้ว่าควรจะเขียน views อะไรบ้าง
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-gyg3gtmyjxtbxoyzveqmxa.png)
แล้วนี่ก็คือความเจ๋งของ LoginView และ LogoutView ครับ เราไม่จำเป็นต้องเขียน views ให้ 2 หน้านี้เลย แค่ไปสร้าง templates ให้เท่านั้น โดย Views 2 ตัวนี้จะไปดึง Templates มาแสดง (Default ของ LoginView อยู่ที่ registration/login.html ส่วนของ LogoutView อยู่ที่ registration/logged_out.html)
พอเสร็จที่ urls.py แล้วผมก็มาเขียน views.py ครับ โดยผมเขียนแค่หน้าเดียวคือ home เพราะ Login กับ Logout Django ทำให้หมดแล้ว
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-lxreo-eusn59x0iwaekldw.png)
เป็นหน้า Home ง่อยๆเขียนลวกๆเพื่อทดสอบเฉยๆครับ 555
ทีนี้ก็มาดูที่ Templates กันครับ ผมสร้าง Templates HTML ไว้ 3 ไฟล์มี home.html registration/login.html และ registration/logged_out.html
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-lo-jmacdbs8klfrfys-6xw.png)
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-p5osflqfl1qytxswkf4rma.png)
![](https://cdn-images-1.medium.com/max/800/1*qwWGz8Af8qCXz_JGaR2L5Q.png)
พอทำทุกอย่างเสร็จก็มาทดลองใช้ดูกันครับpython manage.py runserver
![](https://nonthakon-blog.fly.dev/content/images/max/800/1-nwqpekop5fsdz7fphzyn2q.png)
![](https://cdn-images-1.medium.com/max/800/1*3sAeePc9hOoWdtA6WHf-Ng.png)
![](https://cdn-images-1.medium.com/max/800/1*d7_G_KomjwM09hj_jUwPng.png)
ครับสำหรับวันนี้ก็มีแค่นี้แหละครับ เนื่องจาก Code ใน Django จำเป็นต้องเปิดหลายไฟล์มาก(ๆๆๆ) ผมเลยไม่ได้ยัดใส่ gist เอามาให้ดูง่ายๆ แต่ถ้าใครอยากดู code ทั้งหมดผมอัพลง github ไว้ให้แล้วนะครับ เข้าไปดูได้ที่ github
Medium ที่ 13
ปีนี้ผมตั้งใจว่าจะเขียน Medium ให้ได้เดือนละ 4–5 Medium ครับ สิ้นปีก็จะมี 52 Medium เท่ากับจำนวนสัปดาห์ใน 1 ปีพอดี ไม่รู้จะทำได้มั้ย แต่ก็ถือเป็น Passion เล็กๆน้อยๆของผมครับ 5555
ผมเขียนบทความหลายแนวแล้วแต่ว่าอยากเขียนยังไง ถ้าอยากให้กำลังใจช่วยกด Clap ให้ซักที สองทีด้วยนะครับ :D
เจอกันบทความหน้าครับ