什么是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,′/′(在Django项目里经常用这个来定义首页)r′hello/′:任何以/hello/开头的URL将会匹配,如/hello/jack,/hello/bruce等r′hello/’:任何以/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
版权声明:本文为博主原创文章,未经博主允许不得转载。