Skip to content

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! 😀

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

Published on Categories Django, web-developer, web-framework

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

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

  1. SKGoC

    ใน urls.py ผมใช้
    url(r'hello/$',hello.views.myfunction),
    url(r'who/$',hello.views.myfunction_2),
    แล้วมันหาไม่เจอครับ
    แต่ว่าลองเปลี่ยนเป็นแบบนี้ และ import เพิ่มจะหาเจอ
    from hello.views import myfunction
    from hello.views import myfunction_2

    urlpatterns = patterns('',
    url(r'hello/$',myfunction),
    url(r'who/$',myfunction_2),
    )

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *