编写你的第一个Django应用, 第三部分 - Django 1.11 教程
2017-09-24 18:38
477 查看
这篇教程从第二部分结束的地方开始。我们继续制作网页投票系统并且把重点投放在对外的接口上-“视图”。
博客主页 - 显示最新的几个条目。
条目具体内容页 - 一个条目的永久链接页。
基于年份的归档页 - 显示给定年有条目的所有月份。
基于月份的归档页 - 显示给定月份有条目的所有天。
基于每天的归档页 - 显示给定一天的所有条目。
评论动作 - 处理给定条目的提交评论。
在我们的投票应用中,我们将有以下四种视图:
问题索引页 - 显示最新的几个问题。
具体问题页 - 显示一个具体的问题,没有结果,但是有一个表单来投票。
问题结果页 - 显示某个特定问题的投票结果。
投票动作 - 处理对于某个特定问题对一个特定选项的投票。
在Django里面,网页和其他的内容用视图来传递。每个视图被用一个简单的Python函数来表示(或者方法,如果是基于类的视图)。Django会根据提交的URL链接来选择一个视图(更精确的说是域名之后的那部分URL)。
现在你在网上可能会看到像”ME2/Sites/dirmod.asp?sid=&type=gen&mod-Core+Pages&gid=A6CD4967199A42D9B65B1B”这样的链接。你很快就会知道Django给我们比这个远远优雅的URL模式。
URL模式就是URL的一种形式 - 比如:
为了从一个URL来获得一个视图,Django会使用
这个教程介绍了基本的使用
# 写更多的视图
现在让我们在
将这些视图和
概览
视图是你的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应用, 第二部分 - Django 1.11 教程
- 编写你的第一个Django应用, 第一部分 - Django 1.11 教程
- django 1.8 官方文档翻译: 1-2-5 编写你的第一个Django应用,第5部分
- Python教程之七-----编写你的第一个Django应用(6)
- django 1.8 官方文档翻译: 1-2-6 编写你的第一个Django应用,第6部分
- 【翻译】编写第一个Django app,第三部分——玩转模型层的API
- Django教程之八-----编写你的第一个Django应用(7)
- 编写第一个Django应用:第二部分
- 写下你的第一个Django应用,第三部分
- Django tutorial(3) 【翻译】编写第一个Django app,第三部分——玩转模型层的API
- Django教程之三-----编写你的第一个Django 应用(1)
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第三部分(Page 8)
- Python教程之六-----编写你的第一个Django应用(4)
- django 1.8 官方文档翻译: 1-2-1 编写你的第一个Django应用,第1部分
- Django教程之五-----编写你的第一个Django应用(3)
- 【译】Django官方教程——编写你的第一个Django app,部分1
- django 1.8 官方文档翻译: 1-2-2 编写你的第一个Django应用,第2部分
- Django官方教程(五)【创建你的第一个 Django 项目,第三部分】
- (译)Windsor入门教程---第三部分 编写第一个Installer
- Django教程之四-----编写你的第一个Django应用(2)