【Django】urls.py中patterns后的第一个参数(1.8版本以前)

from django.conf.urls import patterns, include, url
    urlpatterns = patterns('',
)

  第一行导入 django.conf.urls 下的全部模块,它们是 Django URLconf 的基本构造,这包含了一个 patterns 函数、include 函数、url 函数。python

  第二行调用 patterns() 函数并将返回结果保存到 urlpatterns 变量。patterns() 函数当前只有一个参数 —— 一个空的字符串(这个字符串能够被用来表示一个视图函数的通用前缀)。当前应该注意的是 urlpatterns 变量,Django指望能从 ROOT_URLCONF 模块中找到它。该变量定义了URL以及用于处理这些URL的代码之间的映射关系。web

  另外,Python搜索路径就是使用 import 语句时,Python所查找的系统目录清单。例如,假定将Python路径设置为[”, ‘/usr/lib/python2.4/site-packages’, ‘/home/username/djcode/’]。若是执行代码 from foo import bar,Phthon将会首先在当前目录查找 foo.py 模块(Python路径第一项的空字符串表示当前目录。)。若是文件不存在,Python将查找/usr/lib/python2.4/site-packages/foo.py 文件。 django

  固然patterns函数的第一个参数为空字符串只是经常使用的一种方式,也能够直接写为视图函数的引用。下面我将会经过两个例子带你认识patterns函数第一个参数为空字符串和视图函数的引用的区别:app

1)第一个参数为空字符串时svg

from myapp.views import *

urlpatterns = patterns('', #第一个参数指定视图所在的位置
   (r'^hello/$',hello),  #引用视图中的hello函数,注意这里须要使用单引号
   (r'^world/$',world), 
   (r'^$', home),  
)

2)第一个参数为视图函数的引用时函数

urlpatterns = patterns('myapp.views', #第一个参数指定视图所在的位置
   (r'^hello/$','hello'),  #引用视图中的hello函数,注意这里须要使用单引号
   (r'^world/$','world'), 
   (r'^$', 'home'),  
)

注意:若是第一个参数字符串指明了视图函数,则url列表具体函数使用字符串形式传入,且不须要import引入。这里注意,在django中这种查找方式不少,都是以settings中设置的BASE_DIR为基准,写相对路径。 url

看完第二个例子视图函数的引用后你可能会问那么当我有多个视图函数引用时如何写?spa

  在这里须要说明一点的是urlpatterns列表中的内容不必定要写在一块儿,这个变量是支持 += 运算的,这样能够分块完成urlpatterns,结构更好辨认。例如:code

urlpatterns = patterns('myapp.views', #第一个参数指定视图所在的位置
   (r'^hello/$','hello'),  #引用视图中的hello函数,注意这里须要使用单引号
   (r'^world/$','world'), 
   (r'^$', 'home'),  
)

urlpatterns +=patterns('contact.views',  #第二个视图,urlpatterns是个列表,知足可加性
   (r'^contact/$','contact'),  
)