Django 學習手冊-如何建立專案(3) Tutorial Part 3


Django 學習手冊-如何建立專案(3) Tutorial Part 3

Tutorial Part 3

在此份文件中我們將延續"Django 學習手冊-如何建立專案(2)"中的Web-poll application,教導大家如何建立MVC架構中的public interface "views"

一.原理說明

view 為web page 的型式(type),在Django application中通常會放置不同的function來處理不同的需求以及在其中會使用某些特定的template來做為網頁的呈現。

在我們的poll application中,我們會建立四個views
Poll "archive" page -- 用來顯示最新的polls
Poll "detail" page -- 用來顯示poll question, with no result but with a form vote
Poll "results" page -- 用來顯示特定poll 的 results
Vote action -- handles voting for a particular choice in a particular poll.

在Django中,每一個view是由一個簡單的python function表示



二.設計你的URLs

首先我們要來設計URL的結構,你可以藉由建立一個URLconfs的python module來實現。URLconfs可用來說明python code如何透過URL在Django中運作。
當一個使用者發出一個Django-powered page的request需求時,系統將參考ROOT_URLCONF的設定(由python dotted syntax組成)。
Django將URL設定的module-level variable 稱為urlpatterns

regular expression, Python callback function [, optional dictionary])

在建立專案時,在mysite目錄中會存在urls.py檔案,在修改此檔案前,請先確定ROOT_URLCONF在settings.py中的設定是否如下:




ROOT_URLCONF = 'mysite.urls'
之後請修改mysite/urls.py檔為

from django.conf.urls.defaults import *

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^polls/$', 'mysite.polls.views.index'),
    (r'^polls/(?P<poll_id>\d+)/$', 'mysite.polls.views.detail'),
    (r'^polls/(?P<poll_id>\d+)/results/$', 'mysite.polls.views.results'),
    (r'^polls/(?P<poll_id>\d+)/vote/$', 'mysite.polls.views.vote'),
    (r'^admin/', include(admin.site.urls)),
)

當我們在輸入網址http://localhost:8000/polls/23/時,會發生網頁錯誤,由regular expression可知道,所對應到的是mysite.polls.views.detail,在尋找mysite/polls/views.py的檔案後,並無detail()的function存在,此function的格式應該如下

detail(request=<HttpRequest object>, poll_id='23')
poll_id=23是由 (?P<poll_id>\d+) 所得到。