【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'),  
)