7 ตุลาคม 2557

Published 10/07/2557 by with 0 comment

Django บน Python ตอนที่ 5: Views และ URLconfs

หลักการทำงานของ Views และ URLconfs ใน Django
หลักการทำงานของ Views และ URLconfs ใน Django
สวัสดีทุกท่านครับ บทความนี้ผมจะพูดถึงเรื่อง Views และ URLconfs ครับ
Views คือ หน้าแสดงผลบนเว็บ เป็นไฟล์ที่กำหนดการแสดงผลลัพธ์บนเว็บเพจ คือไฟล์ View.py ใน Django
ส่วน URLconfs คือ ไฟล์การตั้งค่าลิงค์ของเว็บเพจใน Django คือไฟล์ urls.py

หลักการทำงานของ Views และ URLconfs ใน Django

เมื่อมีการ Http Request เข้าโดยจะผ่าน URLconfs ก่อนแล้วจึงส่งการทำงานตามลิงค์ที่กำหนดไปให้ Views จะทำการประมวลผลด้วย Django + Python ตลอดการทำงานจนเมื่อประมวลผลเสร็จจะส่ง Http Response กลับไปในรูปแบบ HTML

Views ใน Django

View.py เป็นไฟล์ที่ใช้กำหนดค่าในการแสดงผลอกมาบนหน้าเว็บเพจ มาลองสร้าง View กัน
สร้างแอพก่อน
django-admin.py startapp hello
เสร็จแล้วจะได้โฟลเดอร์ hello เพิ่มขึ้นมา ให้เข้าไปที่ hello แล้วเปิดไฟล์แก้ไข view.py
hello/view.py
from django.shortcuts import render

# Create your views here.


ให้เพิ่มโค้ดลงไปดังนี้
from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
def myfunction(request):
    return HttpResponse("Hello World!")

แค่นี้เราก็ได้หน้า view.py แล้วครับ

URLconfs ใน Django

ต่อมาเรามาตั้งค่า URLconfs กัน ให้กลับไปที่หน้าของ project ให้เข้าไปแก้ไขไฟล์ urls.py ใหเพิ่มโค้ดจาก
from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    # Examples:
    ..
    ..
    url(r'hello/$',myfunction),
)

เป็น
from django.conf.urls import patterns, include, url
from django.contrib import admin

from hello.views import myfunction

urlpatterns = patterns('',
    # Examples:
    ..
    ..
    url(r'hello/$',myfunction),
)

จะเห็นได้ว่า การประกาศ url มีการใช้ Regular Expressions เข้ามาเกี่ยวข้องด้วย โดยสัญญาณ "^" แทนเริ่ม "$"  แทนจบ
ผู้อ่านสามารถศึกษาการใช้งาน Regular Expressions ใน Python ได้ที่ python3.wannaphong.com/2014/10/python-regular-expressions.html



แล้วบันทึกไฟล์ เมื่อผู้อ่านรันเว็บโดยใช้คำสั่ง
python manage.py runserver

เข้าไปที่ http://localhost:8000/hello จะพบกับ
Hello World!

แค่นี้ยังไม่จบครับ เรามาปรับแต่งอะไรเล่น ๆ สนุก ๆ กันต่อครับ  ผู้อ่านคงอยากจะสร้าง app เดียว เช่น guidebook โดยเป็นส่วนหนึ่งของเว็บไซต์ ซึ่งมีการทำงานหลายอย่าง หากต้องการสร้าง guidebook คงต้องมีการแบ่ง app กันอีก แต่ไม่จำเป็น เพราะหน้า view.py กับ  urls.py ได้อย่างอิสระ โดยทำตามนี้ครับ
เข้าไปแก้ไขที่หน้า view.py ของ hello
from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
def myfunction(request):
    return HttpResponse("Hello World!")
def myfunction_2(request):
    return HttpResponse("I am Python! :D")

จะเห็นได้ว่าเราจะเพิ่มคาส ขึ้นมาเรียกาใช้งานเมื่อมีการ   request ต่อมาห้กลับไปที่หน้าของ project ให้เข้าไปแก้ไขไฟล์ urls.py ให้ผู้อ่านทำการแก้ไขจาก
from django.conf.urls import patterns, include, url
from django.contrib import admin

from hello.views import myfunction

urlpatterns = patterns('',
    # Examples:
    ..
    ..
    url(r'hello/$',myfunction),
)

เป็น
from django.conf.urls import patterns, include, url
from django.contrib import admin

from hello.views import myfunction

urlpatterns = patterns('',
    # Examples:
    ..
    ..
    url(r'hello/$',hello.views.myfunction),
    url(r'who/$',hello.views.myfunction_2),
)

เสร็จแล้วบัทึกแล้วลองรันดู โดยใช้คำสั่ง
python manage.py runserver

เมื่อรันเข้าไปที่ http://localhost:8000/hello จะพบกับ
Hello World!
แต่เมื่อเข้าไปที่ http://localhost:8000/who จะพบกับ
 I am Python! :D

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

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

แสดงความคิดเห็นได้ครับ :)