----Django1.8.2中文文档阅读笔记
参考http://python.usyiyi.cn/django/index.html
Python环境参考:
http://blog.csdn.net/baixue6269/article/details/51365092
Django源文件位置
如果你找不到Django源文件在你系统上的位置,运行如下命令:
$ python -c "
import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"
添加视图:
打开polls/views.py文件并将以下Python代码写入:
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
为了能够调用这个视图,我们需要将这个视图映射到URL上 —— 利用一个URLconf。在polls/urls.py文件中键入如下代码:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), ]
下一步,让主URLconf可以链接到polls.urls模块。在mysite/urls.py中插入一个include():
from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r'^polls/', include('polls.urls')), url(r'^admin/', include(admin.site.urls)), ]
启动服务器
在你的浏览器中浏览 http://localhost:8000/polls/ , 你会看到 “Hello, world. You’re at the polls index.”, 正如你在index 视图中定义的那样.
url函数介绍
url()函数具有四个参数:两个必需的regex和 view,以及两个可选的kwargs和name。 到这里,就可以研究下这些参数的含义了:
url() 参数:regex
术语“regex”是“regular expression(正则表达式)”的常用的一个缩写,是一种用来匹配字符串中模式的语法,在这里是URL模式。 Django从第一个正则表达式开始,依次将请求的URL与每个正则表达式进行匹配,直到找到匹配的那个为止。
请注意,这些正则表达式不会检索URL中GET和POST的参数以及域名。 例如,对于http://www.example.com/myapp/请求,URLconf 将查找myapp/。对于http://www.example.com/myapp/?page=3请求,URLconf 也将查找myapp/。url() 参数:view
当Django找到一个匹配的正则表达式时,它就会调用view参数指定的视图函数,并将HttpRequest对象作为第一个参数,从正则表达式中“捕获”的其他值作为其他参数,传入到该视图函数中。如果正则表达式使用简单的捕获方式,值将作为位置参数传递; 如果使用命名的捕获方式,值将作为关键字参数传递。一会儿,我们将给出一个例子。- url() 参数:kwargs
略。 - url() 参数:name
命名你的URL。 这样就可以在Django的其它地方尤其是模板中,通过名称来明确地引用这个URL。 这个强大的特性可以使你仅仅修改一个文件就可以改变全局的URL模式。
编写更多的视图
现在让我们给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)
通过下面的url() 调用将这些新的视图和polls.urls模块关联起来:
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'), ]
在你的浏览器中访问“/polls/34/”。它将运行detail()方法并显示你在URL中提供的ID。 再试一下“/polls/34/results/”和“/polls/34/vote/” —— 它们将显示出对应的结果界面和投票界面。
以下是如果一个使用者访问“/polls/34/”,系统中将会发生的事:
Django发现匹配到了正则表达式’^polls/’
然后,Django将去掉匹配到的文本(”polls/”))并将剩下的文本 —— “34/” —— 发送给‘polls.urls’ URLconf 做进一步处理,这时将匹配r’^(?P[0-9]+)/$’并导致像下面这样调用detail()视图:
detail(request=, question_id=’34’)
question_id=’34’部分来自(?P[0-9]+)。使用圆括号包围一个模式可以“捕获”该模式匹配的文本并将它作为一个参数传递给视图函数;?P 定义一个名字,它将用于标识匹配的模式;[0-9]+是匹配一串数字的正则表达式。