Building Software System II:
Django with Tutorial part 1
Django with Tutorial part 1
เริ่มต้นการเขียน Django app, part 1
หลังจากที่ทำการติดตั้ง Django ไปแล้ว ก็จะเริ่มต้นใช้งาน Django
โดยมีขั้นตอนดังนี้
วิธีการสร้าง Project
เปิด terminal และพิมพ์คำสั่งดังนี้
cd directory/
# คำสั่ง
cd ตามด้วย directory ที่ต้องการเก็บไฟล์
หากต้องการเลือกที่อยู่ของ project
django-admin.py
strartproject name
# สร้างโปรเจ็ค django ชื่อ name หรือตั้งเป็นชื่ออื่นๆได้ ตามความเหมาะสมในที่นี้สร้าง project ชื่อ TestTutorial1
ภายใน root directory ของ project จะมีอีก directory หนึ่งที่ชื่อ name เหมือนกัน ซึ่งจะถูกสร้างโดยอัตโนมัติ
หลังจากสร้างโปรเจ็คขึ้นมา ควรจะเปลี่ยนชื่อที่ root directory เพื่อป้องกันการสับสน โดยใช้คำสั่งดังนี้
mv name new_name
# เปลี่ยนชื่อ project จาก name เป็น new_name หรือชื่ออื่นตามความเหมาะสมในที่นี้เปลี่ยนเป็น DjangoTestTutorial1
# เปลี่ยนชื่อ project จาก name เป็น new_name หรือชื่ออื่นตามความเหมาะสมในที่นี้เปลี่ยนเป็น DjangoTestTutorial1
เมื่อสร้าง
project เรียบร้อยแล้ว
ลองเข้าไปใน directory ควรจะพบไฟล์ดังนี้
DjangoTestTutorial/
manage.py
TestTutorial/
__init__.py
settings.py
urls.py
wsgi.py
manage.py
TestTutorial/
__init__.py
settings.py
urls.py
wsgi.py
การตรวจสอบ sever สำหรับการพัฒนา app
ทำการ run command ต่อไปนี้ python manage.py runserver
# คำสั่ง run server โดยใช้ internal IP port 8000 ซึ่งเป็น default port ของคำสั่ง runserver
# คำสั่ง run server โดยใช้ internal IP port 8000 ซึ่งเป็น default port ของคำสั่ง runserver
ขณะที่ server run อยู่นั้น ให้เปิด browser และ พิมพ์ url ดังนี้ http://127.0.0.1:8000/
เมื่อพิมพ์ url ดังกล่าว จะพบ page “Welcome to Django” และข้อความ It’s worked! แสดงว่า server สามารถใช้งานได้
การ setup database
ให้เข้าไปแก้ไขไฟล์ setting.py ใน sub-directory ของโปรเจ็คในที่นี้คือTestTutorial/setting.pyโดยการแก้ไข Time zone ให้เป็นเขตของเรา ดังนี้
จากนั้นให้ทำการ Synchronous data base เพื่อสร้างตารางฐานข้อมูล ตามการตั้งค่าที่อยู่ในไฟล์ TestTutorial/setting.py ในส่วนของ INSTALLED_APPS โดยคำสั่ง
python manage.py syncdb
เมื่อทำการ run command ดังกล่าว จะเห็นได้ว่ามีการสร้าง table สำหรับ database
โดยการอ้างอิงจาก INSTALLED_APPS ใน setting.py
จากนั้น โปรแกรมจะถามถึงการสร้าง superusers
ถ้าต้องการสร้าง superusers ให้พิมพ์คำว่า yes และ username กับ password
จากนั้นให้ทดลอง database API ตามตัวอย่างดังนี้
ให้เข้าไปแก้ไขไฟล์ setting.py ใน sub-directory ของโปรเจ็คในที่นี้คือTestTutorial/setting.pyโดยการแก้ไข Time zone ให้เป็นเขตของเรา ดังนี้
TIME_ZONE = ‘Asia/Bangkok’
และทำการแก้ไขส่วน INSTALLED_APPS โดยเพิ่ม ‘polls’ ลงไป
และทำการแก้ไขส่วน INSTALLED_APPS โดยเพิ่ม ‘polls’ ลงไป
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
)
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
)
การสร้าง models
หลังจากแก้ไขไฟล์แล้ว จึง run command เพื่อสร้าง
directory polls ด้วยคำสั่ง
python manage.py startapp polls
จะปรากฏ folders ชื่อว่า polls โดยภายใน directory polls จะมีไฟล์ดังนี้
python manage.py startapp polls
จะปรากฏ folders ชื่อว่า polls โดยภายใน directory polls จะมีไฟล์ดังนี้
polls/
__init__.py
admin.py
models.py
tests.py
views.py
__init__.py
admin.py
models.py
tests.py
views.py
ในการสร้าง models นั้นจะใช้ class
ในภาษา python มาใช้ในการสร้างโดย
เข้าไปแก้ไขไฟล์ใน polls/models.py ให้เป็นดังนี้
from django.db import
models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll
= models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
อธิบายโค้ด
จากโค้ดข้างต้น
แต่ละ class เหมือนกับ
1 ตารางในฐานข้อมูลจากนั้นจึงทำการกำหนดขอบเขตของแต่ละ field
class Poll – จะกำหนด field
question – เป็นแบบ CharField มีขนาดไม่เกิน 200 ตัวอักษร
pub_date – เป็นแบบ DateTimeField สำหรับการใส่วันที่ใน class Choice
question – เป็นแบบ CharField มีขนาดไม่เกิน 200 ตัวอักษร
pub_date – เป็นแบบ DateTimeField สำหรับการใส่วันที่ใน class Choice
class Choice – จะกำหนดField อีกหนึ่ง Field
poll – เป็นคีย์จากภายนอกในที่นี้คือ class Poll
choice_text – เป็น Field แบบเดียวกับ question
vote – ใช้สำหรับเก็บค่าจำนวนเต็ม โดยมีค่าเริ่มต้นเป็น 0
poll – เป็นคีย์จากภายนอกในที่นี้คือ class Poll
choice_text – เป็น Field แบบเดียวกับ question
vote – ใช้สำหรับเก็บค่าจำนวนเต็ม โดยมีค่าเริ่มต้นเป็น 0
จากนั้นให้ทำการ Synchronous data base เพื่อสร้างตารางฐานข้อมูล ตามการตั้งค่าที่อยู่ในไฟล์ TestTutorial/setting.py ในส่วนของ INSTALLED_APPS โดยคำสั่ง
python manage.py syncdb
ถ้าต้องการสร้าง superusers ให้พิมพ์คำว่า yes และ username กับ password
ทดลองการใช้งานร่วมกับ API
หลังจากผ่านขั้นตอนข้างต้นแล้ว ต่อไปจะเป็นการทดลองการใช้งานร่วมกับ API โดยก่อนอื่นต้องเปิดการใช้งาน shell ด้วยคำสั่ง
python manage.py shellหลังจากผ่านขั้นตอนข้างต้นแล้ว ต่อไปจะเป็นการทดลองการใช้งานร่วมกับ API โดยก่อนอื่นต้องเปิดการใช้งาน shell ด้วยคำสั่ง
อธิบายโค้ด
จากโค้ดจะเห็นได้ว่าเป็นการกำหนดคำถามและลองเรียกใช้ method ต่างๆ เช่น question = “What’s new?” หรือการกำหนดวันที่ให้เป็นปัจจุบัน หรือแม้กระทั่งการเปลี่ยนคำถามใหม่ อย่าง p.question = “What’s up?”
ต่อมาลองใช้ฟังก์ชัน Unicode โดยการใส่ฟังก์ชันนี้ไปใน class แต่ละ class ของไฟล์ models
จากนั้นให้ทดลอง database API ตามตัวอย่างดังนี้
จากโค้ดจะเห็นได้ว่าเป็นการกำหนดคำถามและลองเรียกใช้ method ต่างๆ เช่น question = “What’s new?” หรือการกำหนดวันที่ให้เป็นปัจจุบัน หรือแม้กระทั่งการเปลี่ยนคำถามใหม่ อย่าง p.question = “What’s up?”
ต่อมาลองใช้ฟังก์ชัน Unicode โดยการใส่ฟังก์ชันนี้ไปใน class แต่ละ class ของไฟล์ models
จากนั้นให้ทดลอง database API ตามตัวอย่างดังนี้
อธิบายโค้ด
จากโค้ดจะเห็นได้ว่าโค้ดข้างต้นเป็นการลองเรียกใช้ method โดยที่โค้ดก่อนหน้าไม่มีการใช้ฟังก์ชัน Unicode เวลาที่เรียก object poll ออกมมาจึงแสดงแค่ Poll Object ซึ่งไม่ค่อยมีประโยชน์ในการนำไปไช้ แต่หลังจากเพิ่ม ฟังก์ชัน Unicode ไปแล้ว จึงแสดงผล ออกมาเป็นคำถามที่ save ไว้ก่อนหน้า
จากโค้ดจะเห็นได้ว่าโค้ดข้างต้นเป็นการลองเรียกใช้ method โดยที่โค้ดก่อนหน้าไม่มีการใช้ฟังก์ชัน Unicode เวลาที่เรียก object poll ออกมมาจึงแสดงแค่ Poll Object ซึ่งไม่ค่อยมีประโยชน์ในการนำไปไช้ แต่หลังจากเพิ่ม ฟังก์ชัน Unicode ไปแล้ว จึงแสดงผล ออกมาเป็นคำถามที่ save ไว้ก่อนหน้า
แหล่งที่มาและแหล่งค้นคว้าเพิ่มเติม







ไม่มีความคิดเห็น:
แสดงความคิดเห็น