如下是django框架中urls.py的代码,urlpatterns为什么要分开写,那个空字符串又是做什么的呢?

代码如下:

  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里面有一个空字符串‘’,这是干什么的呢?

阅读 4.9k
2 个回答

1、patterns分开写,通常是“良好的”编码习惯:比如凡是页面请求(需要返回html页面)都放到一个patterns里;凡是ajax请求都放到另一个patterns里。
2、patterns里第一个参数是用来指定函数所在文件路径。比如,项目结构:

--project
  --app
    views.py
    urls.py

那么patterns里第一个参数就是:'app.views'。
当然,你也可以置空,然后在url里写全路径:app.views.fun_name

另外,最近几个版本的django里,url patterns的语法变了,你可以看看。

1、为什么要append三个pattern
为了可读性和可维护性,通常会把相同功能或相似url的放到一组里面
这是不同人的不同写法,当然可以所有的都写到一起

2、patterns里面有一个空字符串‘’,这是干什么的呢
patterns(prefix, *args)方法的第一个参数
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题