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 分发原理的主要内容,如果未能解决你的问题,请参考以下文章

Django 笔记 05 urls.py详解

django-url的分发

Django URL路由分发系统

django Url层级分发

Django-URL路由分发include

django的url分发封装