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
在建立專案時,在mysite目錄中會存在urls.py檔案,在修改此檔案前,請先確定ROOT_URLCONF在settings.py中的設定是否如下:
regular expression, Python callback function [, optional dictionary])
在建立專案時,在mysite目錄中會存在urls.py檔案,在修改此檔案前,請先確定ROOT_URLCONF在settings.py中的設定是否如下:
ROOT_URLCONF = 'mysite.urls'
之後請修改mysite/urls.py檔為
當我們在輸入網址http://localhost:8000/polls/23/時,會發生網頁錯誤,由regular expression可知道,所對應到的是mysite.polls.views.detail,在尋找mysite/polls/views.py的檔案後,並無detail()的function存在,此function的格式應該如下
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+) 所得到。