您的位置:首页 > 编程语言 > Go语言

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

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

概览

视图是你的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'),
]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django