编写你的第一个Django应用, 第三部分 - Django 1.11 教程

这篇教程从第二部分结束的地方开始。我们继续制作网页投票系统并且把重点投放在对外的接口上-“视图”。

概览

视图是你的Django应用的一种页面类型,通常服务于一个特定的功能并且有一个特定的模板。比如,在一个博客系统里面,你可能需要以下视图:

  • 博客主页 - 显示最新的几个条目。
  • 条目具体内容页 - 一个条目的永久链接页。
  • 基于年份的归档页 - 显示给定年有条目的所有月份。
  • 基于月份的归档页 - 显示给定月份有条目的所有天。
  • 基于每天的归档页 - 显示给定一天的所有条目。
  • 评论动作 - 处理给定条目的提交评论。
    在我们的投票应用中,我们将有以下四种视图:
  • 问题索引页 - 显示最新的几个问题。
  • 具体问题页 - 显示一个具体的问题,没有结果,但是有一个表单来投票。
  • 问题结果页 - 显示某个特定问题的投票结果。
  • 投票动作 - 处理对于某个特定问题对一个特定选项的投票。
    在Django里面,网页和其他的内容用视图来传递。每个视图被用一个简单的Python函数来表示(或者方法,如果是基于类的视图)。Django会根据提交的URL链接来选择一个视图(更精确的说是域名之后的那部分URL)。
    现在你在网上可能会看到像”ME2/Sites/dirmod.asp?sid=&type=gen&mod-Core+Pages&gid=A6CD4967199A42D9B65B1B”这样的链接。你很快就会知道Django给我们比这个远远优雅的URL模式。
    URL模式就是URL的一种形式 - 比如: /newsarchive/<year>/<month>/
    为了从一个URL来获得一个视图,Django会使用URLconfs对象。一个URLconf将URL模式(用正则表示式表示)映射到一个视图。
    这个教程介绍了基本的使用URLconfs的方法,更具体的信息你可以参照django.urls对应的文档。
    # 写更多的视图
    现在让我们在polls/views.py里面增加更多的视图。这些视图有着微小的差别,由于他们带有一个参数:
polls/views.py
def detail(request, question_id):
    return HttpResponse("You're looking at question %s." % question_id)

def results(request, question_id):
    response = "You're looking at the results of question %s."
    return HttpResponse(response % question_id)

def vote(request, question_id):
    return HttpResponse("You're voting on question %s." % question_id)

将这些视图和polls.urls模块通过调用url()绑定起来:

polls/urls.py
from django.conf.urls import url

from . import views

urlpatterns = [
    # ex: /polls/
    url(r'^$', views.index, name='index'),
    # ex: /polls/5/
    url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
    # ex: /polls/5/results/
    url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'),
    # ex: /polls/5/vote/
    url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值