代码如下:
1 # coding: utf8
2
3 from django.conf.urls.defaults import patterns, url
4
5 from views.information import information
6 from views.long_related import long_related
7 from views.related import related
8
9 urlpatterns = []
10 urlpatterns += patterns(
11 '', #这个空字符串的作用是什么?
12 url(r'^video/app/article/information/$', information, {'version': 17}),
13 url(r'^video/app/article/information/v(?P<version>\d+)/$', information),
14 url(r'^test/information/v(?P<version>\d+)/$', information),
15 )
16
17 urlpatterns += patterns( #为什么要另外定义一个patterns加到urlpatterns中?
18 '',
19 url(r'^video/app/article/related/$', related, {'version': 1}),
20 url(r'^video/app/article/related/v(?P<version>\d+)/$', related),
21 )
22
23 urlpatterns += patterns(
24 '',
25 url(r'^video/app/article/related/long/$', long_related, {'version': 1}),
26 )
问题也如代码中的注释,首先为什么要append三个patterns,合在一起不行吗?比如
9 urlpatterns = []
10 urlpatterns += patterns(
11 '', #这个空字符串的作用是什么?
12 url(r'^video/app/article/information/$', information, {'version': 17}),
13 url(r'^video/app/article/information/v(?P<version>\d+)/$', information),
14 url(r'^test/information/v(?P<version>\d+)/$', information),
19 url(r'^video/app/article/related/$', related, {'version': 1}),
20 url(r'^video/app/article/related/v(?P<version>\d+)/$', related),
25 url(r'^video/app/article/related/long/$', long_related, {'version': 1}),
26 )
另外,patterns里面有一个空字符串‘’
,这是干什么的呢?
1、patterns分开写,通常是“良好的”编码习惯:比如凡是页面请求(需要返回html页面)都放到一个patterns里;凡是ajax请求都放到另一个patterns里。
2、patterns里第一个参数是用来指定函数所在文件路径。比如,项目结构:
那么patterns里第一个参数就是:'app.views'。
当然,你也可以置空,然后在url里写全路径:app.views.fun_name
另外,最近几个版本的django里,url patterns的语法变了,你可以看看。