Django 笔记 URL 分发原理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 笔记 URL 分发原理相关的知识,希望对你有一定的参考价值。
做了2个页面,觉得大致了解了参数和页面如何传递了,我们来看下原理。
一个HTTP请求发送到http://127.0.0.1:8000/hello/
Django会第一时间去找setting文件的setting.py
ROOT_URLCONF = ‘untitled2.urls‘
当访问 URL /hello/ 时,Django 根据 ROOT_URLCONF 的设置装载 URLconf 。 然后按顺序逐个匹配URLconf里
的URLpatterns,直到找到一个匹配的。 当找到这个匹配 的URLpatterns就调用相关联的view函数,并把
HttpRequest 对象作为第一个参数。 (稍后再给出 HttpRequest 的更多信息) (我们将在后面看到
HttpRequest的标准)
正如我们在第一个视图例子里面看到的,一个视图功能必须返回一个HttpResponse。 一旦做完,Django将完
成剩余的转换Python的对象到一个合适的带有HTTP头和body的Web Response,(例如,网页内容)。
总结一下:
1. 进来的请求转入/hello/.
2. Django通过在ROOT_URLCONF配置来决定根URLconf.
3. Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
4. 如果找到匹配,将调用相应的视图函数
5. 视图函数返回一个HttpResponse
6. Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
当一个动态视图生成的时候,例如
import datetime
now = datetime.datetime.now()
now
datetime.datetime(2016, 12, 13, 14, 9, 39, 2731)
>>> print now
201626 14:09:39.002731
其实这些都是python的代码,django并没有去解释任何代码。
view.py
from django.http import HttpResponse import datetime def hello(request): return HttpResponse("Hello world") def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html)
urls.py
from django.conf.urls.defaults import * from mysite.views import hello, current_datetime urlpatterns = patterns(‘‘, (‘^hello/$‘, hello), (‘^time/$‘, current_datetime), )
生成日期的http请求经过url转向view,生成结果后返回前台
本文出自 “于昊(Pcdog)的博客” 博客,请务必保留此出处http://433266.blog.51cto.com/423266/1741260
以上是关于Django 笔记 URL 分发原理的主要内容,如果未能解决你的问题,请参考以下文章