【Django turorial 4】

来源:互联网 发布:windows10软件字体模糊 编辑:程序博客网 时间:2024/05/17 17:14

13. 定义View

view 提供一系列供调用的方法并且包含一个独特的template。在一个blog页面通常会有以下几个view

~Blog 首页,展示最新的入口

~每个入口均有一个链接页面

~年度归档

~月归档

~日归档

~评论内容

在我们的投票系统中,同样也需要以下几个页面:

~索引页面。用来展示最新的投票内容

~详细展现页面。展示每一条投票的内容

~投票结果页面。

~投票页面。用来处理每一个choice内容选择的动作

from django.http import HttpResponsedef index(request):    return HttpResponse("Hello, world. You're at the poll index.")def detail(request, poll_id):    return HttpResponse("You're looking at poll %s." % poll_id)def results(request, poll_id):    return HttpResponse("You're looking at the results of poll %s." % poll_id)def vote(request, poll_id):    return HttpResponse("You're voting on poll %s." % poll_id)

14. 定义URL

在pollsite/urls 定义如下链接~

from django.conf.urls.defaults import patterns, include, urlfrom django.contrib import adminadmin.autodiscover()urlpatterns = patterns('',    url(r'^polls/$', 'polls.views.index'),    url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail'),    url(r'^polls/(?P<poll_id>\d+)/results/$', 'polls.views.results'),    url(r'^polls/(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),    url(r'^admin/', include(admin.site.urls)),)

其中正则表达式的部分可以参考相关资料。

同时,需要在polls/view.py中定义各种方法如下:

from django.shortcuts import render_to_responsefrom polls.models import Polldef index(request):    latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]    return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list})
from django.shortcuts import render_to_response, get_object_or_404
# ...def detail(request, poll_id):    p = get_object_or_404(Poll, pk=poll_id)    return render_to_response('polls/detail.html', {'poll': p})

在polls中创建 index.html文件并定义如下:
{% if latest_poll_list %}    <ul>    {% for poll in latest_poll_list %}        <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>    {% endfor %}    </ul>{% else %}    <p>No polls are available.</p>{% endif %}

定义detail.html文件并定义如下:

<h1>{{ poll.question }}</h1><ul>{% for choice in poll.choice_set.all %}    <li>{{ choice.choice }}</li>{% endfor %}</ul>
请继续阅读tutorial 5