วันอาทิตย์ที่ 20 มกราคม พ.ศ. 2562

W4 Update

สิ่งที่ได้ศึกษาเรียนรู้

     1.ได้ศึกษาเกี่ยวกับการทำเว็บไซต์ด้วยการใช้ Django ที่มีการอำนวยความสะดวกในการสร้างเว็บหลากหลายอย่าง เช่น ส่วนการจัดการของแอดมิน , การสร้างและจัดการฐานข้อมูลด้วยการสั่งงานผ่าน command เป็นต้น

      2.การสร้างโปรเจคของ Django สามารถสร้างผ่าน command ด้วยการใช้งานคำสั่ง

django-admin startproject mysite   >> mysite คือชื่อโปรเจคที่เราต้องการสร้าง

โปรเจคที่สร้างขึ้นมาภายในจะประกอบไปด้วยโฟลเดอร์ชื่อเดียวกันกับโปรเจคและไฟล์ manage.py ซึ่งเป็นไฟล์ที่ใช้ในการสั่งให้โปรเจคทำงานต่างๆ โดยปกติแล้วจะไม่มีการแก้ไขไฟล์นี้ แต่จะมีการเรียกใช้งานเสมอๆ เช่น การสร้าง app , การ run server 

     3.การสร้าง app สามารถสร้างได้มากเท่าที่เราต้องการในโปรเจคของเรา โดยการ เปิดโปรเจคใน command และใช้คำสั่ง 
py manage.py startapp polls           >> polls คือชื่อของแอพลิเคชันที่อยู่ในโปรเจคที่เราทำการสร้างขึ้น

ภายในโปรเจคจะมีไฟล์ที่สร้างขึ้นมาพร้อมกันเพื่อให้เรานำไปใช้งานต่างๆ ต่อไป เช่น

views.py
     สำหรับสร้างฟังก์ชันการทำงานของเว็บ เช่น ฟังก์ชันให้แสดงผล ฟังก์ชันดึงค่าจากฐานข้อมูล ฟังก์ชันการคำนวณค่าต่างๆ โดยที่การทำงานจะทำตามเงื่อนไขแรกที่สำคัญคือ มีการ request เข้ามาเพื่อทำฟังก์ชันที่กำหนด เช่น ให้แสดงคำว่า  Hello World เป็นแบบหัวเรื่อง

def index(request):
     return HttpResponse("<h1>Hello World</h1>")

models.py 
     เป็นส่วนของการสร้างฐานข้อมูลด้วยการระบุองค์ประกอบต่างๆ ของฐานข้อมูล เช่น ชื่อฐานข้อมูล ชื่อ field ที่เก็บข้อมูลต่างๆ ประเภทของแต่ละ field และ การเชื่อมโยงของแต่ละ feild เป็นต้น ซึ่งแต่ละ feild จะต้องสร้างขึ้นใน class นั้นๆ เช่น ต้องการสร้างฐานข้อมูลเก็บคำถามที่เป็นตัวอักษร และให้ feild ชื่อว่า Question ให้เราทำการสร้าง class Question(models.Model) และระบุรายละเอียดของรูปแบบข้อมูลที่ต้องการลงใน class
ตัวอย่างการสร้างฐานข้อมูลของตัวเลือก โดยให้ตัวเลือกที่สร้างเป็นของคำถามแต่ละคำถามโดยมี field ชื่อ question เก็บคำถามที่ทำการเชื่อมโยงมาจากฐานข้อมูลคำถาม และสร้าง choice ของคำถามต่างๆ นั้นเป็น field ที่ชื่อว่า choice_text และมีประเภทเป็น CharField และเก็บผลคะแนนการโหวตเป็น IntegerField

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

admin.py
    เป็นการระบุคำสั่งให้ส่วน แอดมินมีความสามารถอะไรข้าง เช่น

admin.site.register(Question)        >> ให้แอดมินสามารถจัดการคำถามได้

urls.py
     เป็นส่วนที่ทำการตรวจสอบระหว่าง url ที่ user ทำการพิมพ์ลงในช่องและส่ง request เข้ามา ว่าตรงกันกับ url ที่ตั้งไว้หรือไม่ หากตรงกันก็ให้ทำงานตามฟังก์ชันนั้นๆที่ได้ผูกติดอยู่กับลิ้งก์นั้น 

urlpatterns = [
    path('', views.index, name='index'),                                               >>ทำฟังก์ชัน views.index
    path('<int:question_id>/', views.detail, name='detail'),                 >>ทำฟังก์ชัน views.detail
    path('<int:question_id>/results/', views.results, name='results'),  >>ทำฟังก์ชัน views.results
    path('<int:question_id>/vote/', views.vote, name='vote'),             >>ทำฟังก์ชัน views.vote
    ]
 
     4.ทดลองสร้าง app ตาม tutorial ของเว็บไซต์ Django ซึ่งเป็น app ที่ใช้ในการสร้างโพลสำรวจและลงคะแนนโหวต

     5. ทดลองสร้าง template


ปัญหา / วิธีการแก้ไข
     1.พิมพ์ชื่อไม่ตรงกัน ทำให้เกิด error เมื่อทดลอง runserver

วิธีการแก้ไข >> อ่าน error ที่และดูไล่ลำดับจากบรรทัดที่เกิด error ตามการทำงาน เช่น
ไม่รู้จักฟังก์ชัน result ในไฟล์ views.py ก็จะเริ่มดูที่ไฟล์ views.py ซึ่งเรียก template มาใช้ และมีการเรียกฟังก์ชันที่ไฟล์ urls.py ก็จะไปดูที่ไฟล์ template และ urls.py ตามลำดับ

     2.ลืม import

วิธีการแก้ไข >> import สิ่งที่ลืมเข้ามาใช้งาน เช่น
การใช้งาน get_object_or_404( ) ต้องมีการ import ด้วย from django.shortcuts import get_object_or_404

     3.ทำข้ามขั้นตอน tutorial ทำให้เกิด error

วิธีการแก้ไข >> ย้อนกลับไปอ่าน tutorial ตรงจุดที่เกิด error ทำความเข้าใจใหม่ และ แก้ไข code


----------------------------------------------------
Cr :
https://docs.djangoproject.com/en/2.1/intro/tutorial01/
https://docs.djangoproject.com/en/2.1/intro/tutorial02/
https://docs.djangoproject.com/en/2.1/intro/tutorial03/
https://docs.djangoproject.com/en/2.1/intro/tutorial04/
https://docs.djangoproject.com/en/2.1/topics/templates/
http://www.tangowithdjango.com/book/chapters/models_templates.html
https://www.youtube.com/watch?v=l2YDT3fVv9k
https://medium.com/@9coding/

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

แสดงความคิดเห็น