- ได้ไปลง Django ใน Ubunto
- ศึกษา Tutorial 1 - 2 ของ Django ในเว็ป https://docs.djangoproject.com/en/1.10/intro/tutorial01/ และ https://docs.djangoproject.com/en/1.10/intro/tutorial02/
ซึ่งเนื้อหา ของบทที่ 1 จะเป็นการสร้าง โปรเจค Django และ อธิบายไฟล์ต่างๆในโปรเจค รวมถึงการ ทำ webapp คร่าวๆ
ส่วนในส่วนที่ 2 จะเป็น การอธิบายการทำฐานข้อมูลคร่าวๆ ซึ่ง เนื้อหามีเยอะมากยิบย่อย ซึ่งก็ยังไม่ได้เข้าใจทั้งหมด แต่พอจะเข้าใจคร่าวๆว่ามันมีอะไรบ้าง ทำอะไรได้
- ศึกษา จาก youtube อีกทางนึง https://www.youtube.com/watch?v=qgGIqRFvFFk เป็นชาแนลที่ทำเพื่อแนะนำการใช้งาน Django ซึ่งมี 40 part ตอนนี้ ดูไปจนถึง part 18 ซึ่งเนื้อหาก็จะคล้ายๆกับ ในเว็ปของ Django เลย
..........................................................................................................................
สิ่งที่ได้ลองไปเช่น
การสร้างโปรเจค Django โดยเข้า Directory ที่ต้องการก่อน จากนั้น พิม
- django-admin startproject [name of project]
ในส่วนชื่อของโปรเจคนั้นจะเป็นชื่ออะไรก็ได้ไม่มีผลต่อการรันโค้ดภายใน
โดยผม ได้สร้างภายใต้ชื่อโปรเจคว่า bs2 ได้ไฟล์ดังนี้
- ต่อมาได้ลองสร้าง web app ดู โดยใช้ คำสั่งภายในdirectory โปรเจคว่า
*$python3 manage.py startapp [app name]
โดยผมใช้ชื่อว่า bmi เมื่อเสร็จแล้วจะได้ไฟล์ในโฟล์เดอร์ประมาณนี้
จะเห็นได้ว่ามีโฟล์เดอร์ ใหม่ขึ้นมาเป็นชื่อตาม web app ภายในจะมีไฟล์ python ที่เป็นตัว models views และอื่นๆอยู่ ซึ่งจากการศึกษาคร่าวๆ พบว่า models จะสามารถสร้าง class ที่ใช้ในเรื่องเกี่ยวกับ การเก็บข้อมูล datatbase ได้ ส่วน views จะเป็นส่วนที่ใช้ในการส่งค่ากลับไปให้ตอบสนอง
ต่อมาจะเริ่มเขียนโค้ดให้แสดงผลง่ายๆ โดยเขียนในไฟล์ Views.py
คือ จะมีการสร้าง ฟังก์ชั่น index ขึ้นมามี มีการส่งค่ากลับเป็น HttpResponse("html code")
และเราต้องการที่จะ เชื่อมต่อ กับ URL จึงได้สร้างไฟล์ชื่อ urls.py ขึ้นมา โดยมีโค้ดภายในดังนี้
คือจากภาพคือมีการ import module Views เข้ามาใช้งาน และมีการกำหนด urlpatterns
เพื่อเชื่อมต่อว่าถ้ามีการเรียนก localhost:8000/bmi นั้นจะให้ใช้งานฟังก์ชั่นในไฟล์ views.py
ที่ชื่อ index
จากนั้นเราต้องไปเชื่อมกับ ไฟล์ urls ของตัวโปรเจคหลักอีกรอบนึงดังนี้
- import include เพื่อมาใช้งาน
- เพิ่มเนื้อหาส่วน url(r'^bmi/', include('bmi.urls')), ขึ้นมา เพื่อเชื่อมต่อไปที่ urls.py ของ app bmi
(ทำงานเมื่อ localhost:8000/bmi จะทำการทำตามคำสั่งbmi.urls )
การเชื่อมต่อแบบนี้มีข้อดูคือ ไม่ว่าbmi จะไปอยู่ที่ไหน เราแค่เชื่อมไปที่ไฟล์หลัก urls.py ก็พอ ก็ใช้งานได้แล้ว
จากนั้นลอง ใช้คำสั่งเปิดเซิฟเวอร์
- python3 manage.py runserver
or - python3 manage.py runserver xxxx (xxxx คือพอร์ทที่ต้องการใช้)
or - ptthon3 manage.py runserver x.x.x.x:yyyy (xคือ ip y คือ port ที่ต้องการ)
ผมใช้ python3 manage.py runserver ผลคือ
เมื่อเข้า 127.0.0.1:8000/bmi จะเข้าไปที่หน้าเว็ปแอปที่ได้เขียนไป คือแสดงผล Hello Django
...................................................................................................................................
ต่อมาในส่วนที่2 ที่เข้าใจค่อนข้างยากและคำสั่งเยอะ ส่วนแรกคือการตั้งค่า DATABASE
ในไฟล์ setting.py ในโฟล์เดอร์โปรเจคเรานั้นจะมีการตั้งค่าประมาณนี้คือ
.ช้งาน sqlite ซึ่งหากต้องการใช้ อย่างอื่นก็สามารถลงและเปลียนได้ ต่อมาในไฟล์ model.py ของ web app ที่เรามี ได้เพิ่มส่วนที่เป็น class มา ซึ่งเวลาเก็บข้อมูล class
จะมีส่วนประกอบต่างๆ เช่น question_text = models.CharField(max_length=200) นี้จะเป็นการกำหนดคุณสมบัติ อย่างนึง เป็น ตัวอักษร ความยาวไม่เกิน 200 และ ส่วนนี้จะเป็น 1 colum เวลา เก็บข้อมูล
การทำแค่นี้ยังไม่เป็นการ Active models ซึ่งเราต้องไปทำการดังนี้
ในไฟล์ setting.py เพิ่มส่วนที่ครอบไว้ในรูป
จากนั้นพิม
python3 manage.py makemigrations bmi
และจะขึ้นดังภาพ(ล่างๆ)
การใช้คำสั่ง makemigrations นั้นจะเป็นการบอก Django ว่าเราได้แก้ไขบางอย่างใน models และเราต้องการใช้การเปลี่ยนแปลงนั้นในการเก็บข้อมูล
และมีไฟล์เพิ่มขึ้นมาในโฟล์เดอร์ app/migration ดังนี้
คาดว่าเป็นประวัติการแก้ไข และข้อมูลของการเก็บข้อมูล(รายละเอียดต่างๆ)
ลองเช็คผ่านcommandline ตามนี้
python3 manage.py sqlmigrate bmi 0001
(จะมีรายละเอียดขึ้นมาให้อ่านได้เช่นกัน)
และด้านล่าง การพิม python3 manage.py migrate จะเป็นการสร้าง model table ในdatabase ซึ่งจะไปอ่านค่าในไฟล์ setting.py ในส่วน INSTALLED_APPS เท่านั้น
ซึ่งจะมี ส่วนที่เขาแนะนำ 3 ขั้นตอนการเปลียนแปลง model ว่า
1 เปลี่ยน model ใน models.py
2 ใช้คำสั่ง python3 manage.py makemigrations เพื่อบันทึกการเปลียนแปลง
3 python3 manage.py migrate เพื่อใช้งานสิ่งที่เปลียนแปลงกับส่วนdatabase
.....................................................................................................................................
เพิ่มเติม
จากภาพนั้น ได้ลองทำการสร้าง objects มีคุณสมบัติคือ question_text = what are you looking for? และไปเพิ่ม pub_date = time_now ทีหลัง และทำการsave() (หากไม่ใช้คำสั่งนี้ จะไม่มีการอัพเดทค่าลงไปให้กับ database จากนั้นเช็ค id, pk (เนื่องจากผมเคยสร้างมาแล้วครั่งนึง นี้เลยเป็น ชิ้นที่2 เลยขึ้นที่ 2) แะลเช็คค่าคุณสมบัติว่า มี question_text ตรงมั้ย และ ในส่วนคำสั่งสุดท้ายเป็นการเช็คว่า ใน colum Question นั้น มี objects อะไรบ้าง ซึ่งหากว่า
ไม่มีส่วนในภาพนี้
(__str__) จะมีการreturn ประมาณนี้ แทน
<QuerySet [<Question: Question object>]>
และได้ไปลอง การค้นหาแบบเจาะจง id ที่ต้องการ โดยใช้คำสั่ง
Question.objects.all()
Question.objects.filter(id=2)
Question.objects.filter(question_text__startswith="xxx")
.......................................................
ลอง โหมด Admin
python manage.py createsuperuser
จากนั้นจะมีให้กรอก user email password ต่างๆ
และหลังจากเปิดเซิฟเวอร์แล้วก็ลองเข้าหน้า admin
127.0.0.1:8000/admin
จะเห็นว่ามีอะไรบ้าง
มีข้อมูลที่เราได้ใส่เข้าไป สามารถกดเข้าไปแก้ไขได้
ด้านขวาบนมีปุ่ม HISTORY แสดงประวัติการแก้ไข





















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