2012年5月19日

Django 学习手册-如何建立专案(3)-Tutorial Part 3


Django 学习手册-如何建立专案(3)
Tutorial Part 3


在此份文件中我们将延续"Django 学习手册-如何建立专案(2)"中的Web-poll application,教导大家如何建立MVC架构中的public interface "views"
一.原理说明
view 为web page 的型式(type),在Django application中通常会放置不同的function来处理不同的需求以及在其中会使用某些特定的template来做为网页的呈现。
在我们的poll application中,我们会建立四个viewsPoll "archive" page -- 用来显示最新的pollsPoll "detail" page -- 用来显示poll question, with no result but with a form votePoll "results" page -- 用来显示特定poll 的resultsVote 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档为

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+) 所得到。
















没有评论:

发表评论

BlogAD