码迷,mamicode.com
首页 > Web开发 > 详细

Django 笔记 URL 分发原理

时间:2016-02-05 19:31:21      阅读:420      评论:0      收藏:0      [点我收藏+]

标签:background   setting   black   white   color   

做了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 分发原理

标签:background   setting   black   white   color   

原文地址:http://433266.blog.51cto.com/423266/1741260

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!