ในส่วนบทที่ 2 จะเน้นเรื่องการสร้างฐานข้อมูล การสร้างคำถาม ตัวเลือก การตอบสนองของหน้าเว็บเพจ และ การตั้งค่า admin
ในไฟล์ models.py ของ app polls จะเพิ่ม class Question,Choice โดยจะสืบทอด models.Model มาอีกที
โดยหลังจากนั้นก็จะไปเพิ่ม ส่วนของ setting.py เพื่อให้รู้ว่ามี app ตัวใหม่ชื่อ polls มาเพิ่มเติมอีกตัวหนึ่ง
หลังจากที่มีการเปลี่ยนแปลงของไฟล์ที่เป็น model จะต้องใช้คำสั่ง
- python3 manage.py makemigrations
- python3 manage.py migrate
เพื่อเป็นการ apply การเปลี่ยนแปลงลงไปยัง Database โดยจะทำการตรวจสอบจากส่วน INSTALLED_APPS ถ้ามีเพิ่มเติมจะต้องทำ Migration ทุกๆครั้ง
Playing with API
เป็นการสร้าง objects ให้กับทั้งส่วนของคำถาม และ ตัวเลือก (Question, Choice) โดยจะทำผ่าน shell วิธีการเปิด shell ก็ใช้คำสั่ง python3 manage.py shell
โดยอันดันแรกจะต้องทำการ import class ทั้งสองตัวก่อนซึ่งก็คือ Question, Choice ใช้คำสั่ง
- from polls.models import Question, Choice
หลังจากนั้น ก็ต้อง import timezone เข้ามาด้วยเพื่อใช้ในการใส่ค่าให้กับทาง pub_date หรือ วันที่ตั้งกระทู้คำถาม
- from django.utils import timezone
หากต้องการสร้างคำถามจะต้องใช้คำสั่งดังนี้
- q = Question(question_text="What's your name?", pub_date=timezone.now())
จะเป็นการตั้งคำถามว่า What's your name? ซึ่งสามารถเช็คดูได้ว่ามีคำถามทั้งหมดกี่คำถามโดยใช้คำสั่ง Question.objects.all()
การสร้างตัวเลือก หรือ Choice จะต้องทำการเก็บไอดีของคำถามก่อนเพราะว่าแต่ละ คำถามจะมีตัวเลือกไม่เหมือนกัน โดยวิธีการเก็บไอดีคือ
- q = Question.objects.get(pk=?)
โดย pk (Primary Key) จะเป็นไอดีเมื่อ get pk มาแล้วก็จะสามารถสร้าง Choice ตามคำถามได้
- q.choice_set.all() เป็นการดูว่าchoice ทั้งหมดของคำถามนี้มีอะไรบ้าง
- q.choice_set.create(choice_text="John", votes=0) ก็คือตัวเลือกชื่อ John ค่า votes = 0
นอกจากนี้ยังมีคำสั่งอื่นๆอีก ให้ลองดูตามนี้ กดสิกด!
การสร้าง admin
ใช้คำสั่ง python3 manage.py createsuperuser
หลังจากนั้นก็ใส่ username , email และ password ลงไปซึ่งจะใช้ในการเข้าหน้า admin ของเว็บไซต์ของเราซึ่ง Django ได้มีหน้า admin แบบสำเร็จรูปอยู่แล้วมีหน้าตาแบบนี้ โดยวิธีการเข้าก็คือ localhost:8000/admin
ในหน้า admin จะเป็นส่วนที่จัดการสิ่งต่างๆใน project นี้ โดยสามารถสร้างคำถาม ในนี้ได้ ตั้งค่ารหัสผ่านก็ได้ แล้วยังตั้งไอดีเพิ่มได้อีกด้วย