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

Django开发实战之URLconf详解

时间:2015-07-24 16:15:21      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:django   web实战   urlconf详解   

什么是URLconf?
URLconf 就像是 Django 所支撑网站的目录。 它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。 你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。
上篇文章(Django实战:构建一个blog)中我们新建了一个工程mysite,mysite/mysite/urls.py这个文件(自动创建的)就对应URLconf,我们查看一下这个文件,如下图所示:
技术分享
这个文件必须暴露出一个urlpatterns对象,由patterns函数(或方法)返回。该函数由以下两点组成:
1.一个打头的前缀字符串(此处为空)
2.一个或多个由正则表达式字符串匹配一个或一组URL组成的Python元组。(此处是url函数)

Python正则表达式
正则表达式 (或 regexes ) 是通用的文本模式匹配的方法。 下面是一些基本的但常用的语法:
技术分享
注意点1:
^表示要求表达式对字符串的头部进行匹配,$表示要求表达式对字符串的尾部进行匹配。
注意点2:
Django在检查URL模式前,会移除每一个申请的URL开头的斜杠(/)。
例子:
r’^URL/Djangorhello/:/hello/URL/hello/jack,/hello/brucerhello/’:任何以/hello/结尾的URL将会匹配,如/jack/hello/,/bruce/hello/等
r’hello/’:任何包含hello/的URL将会匹配

用url函数替换元组
较老版本的Django里面用的是元组,eg:

from django.conf.urls.defaults import *
from mysite.views import hello

urlpatterns = patterns(‘‘,
    (‘^hello/$‘, hello),
)

此处patterns函数的第二个参数是一个元组,而新版本的Django将元组替换成了url函数。url函数接收三个参数:一个正则表达式、一个视图字符串/函数以及一个可选的参数name,name必须保持唯一。eg:

```
from django.conf.urls.defaults import *

urlpatterns = patterns(‘‘,
    url(‘^hello/$‘, ‘blog.views.hello‘, name=‘hello‘),
)

“`
注意这里url的第二个参数,该参数’blog.views.hello’是一个字符串,指向一个具体的函数(或方法),此处代表工程的根目录下一个blog目录,在blog目录下有个views.py这个文件,在views.py中定义了一个hello函数。比如说工程名叫mysite,那么views.py的路径是mysite/blog/views.py。
这里总结一下从在浏览器中输入http://ip:port/hello/到浏览器显示相应的信息的整个过程。
1.Django查找配置文件mysite/mysite/settings.py,查看ROOT_URLCONF为多少,如图所示:
技术分享
这里为’mysite.urls’,表示URLconf为mysite/urls.py这个文件。
2.查看mysite/urls.py,匹配正则表达式,看哪项能匹配hello/
3.若匹配不成功,则返回http 404信息
4.若匹配成功,如url(‘^hello/$’, ‘blog.views.hello’, name=’hello’)就调用blog/views.py里的hello方法,该方法接收HttpRequest参数,返回HttpResponse对象。
具体的views.py我们以后再讲。

Django开发实战视频教程:http://www.duobei.com/course/3812028831

版权声明:本文为博主原创文章,未经博主允许不得转载。

Django开发实战之URLconf详解

标签:django   web实战   urlconf详解   

原文地址:http://blog.csdn.net/u011943221/article/details/47041495

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