เมื่อวานผมลองใช้เวลาว่างๆเปิด 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 เพื่อตั้งค่าสำหรับสิ่งที่เราจะใช้กันก่อนครับ

ผมเพิ่มโฟลเดอร์ templates เข้าไปเพื่อที่จะใช้ templates

เลื่อนมาข้างล่างสุดแล้วผมก็เขียน 3 บรรทัดนี้เพิ่มครับ อ้างอิงจาก reference ของ django 1.11

ทีนี้ก็มาเริ่มเขียนกันเลย ผมเริ่มเขียนจาก urls.py ก่อนเพื่อให้ผมรู้ว่าควรจะเขียน views อะไรบ้าง

แล้วนี่ก็คือความเจ๋งของ 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 ทำให้หมดแล้ว

เป็นหน้า Home ง่อยๆเขียนลวกๆเพื่อทดสอบเฉยๆครับ 555

ทีนี้ก็มาดูที่ Templates กันครับ ผมสร้าง Templates HTML ไว้ 3 ไฟล์มี home.html registration/login.html และ registration/logged_out.html

home.html
registration/logged_out.html
registration/login.html

พอทำทุกอย่างเสร็จก็มาทดลองใช้ดูกันครับpython manage.py runserver

เมื่อเข้ามาจะเห็นหน้า home ง่อยๆที่ผมเขียนไว้ครับ
ถ้าไปที่ /login ก็จะมีช่อง login ขึ้นมา
อันนี้คือ login เรียบร้อยแล้ว ถ้าจะ logout ก็ไปที่ /logout ครับ

ครับสำหรับวันนี้ก็มีแค่นี้แหละครับ เนื่องจาก Code ใน Django จำเป็นต้องเปิดหลายไฟล์มาก(ๆๆๆ) ผมเลยไม่ได้ยัดใส่ gist เอามาให้ดูง่ายๆ แต่ถ้าใครอยากดู code ทั้งหมดผมอัพลง github ไว้ให้แล้วนะครับ เข้าไปดูได้ที่ github

Medium ที่ 13
ปีนี้ผมตั้งใจว่าจะเขียน Medium ให้ได้เดือนละ 4–5 Medium ครับ สิ้นปีก็จะมี 52 Medium เท่ากับจำนวนสัปดาห์ใน 1 ปีพอดี ไม่รู้จะทำได้มั้ย แต่ก็ถือเป็น Passion เล็กๆน้อยๆของผมครับ 5555
ผมเขียนบทความหลายแนวแล้วแต่ว่าอยากเขียนยังไง ถ้าอยากให้กำลังใจช่วยกด Clap ให้ซักที สองทีด้วยนะครับ :D
เจอกันบทความหน้าครับ