url函式詳解
url()函式在urls.py檔案中可以說是最重要的函式,屬於核心。主要功能就是利用正規表示式匹配對應的url並且指明處理函式。下面詳細講解這部分的應用。我們從引數著手,先講解基礎用法,然後在用示例展示一些高階用法。
url有四個引數,分別是兩個必選引數:regex、view和兩個可選引數:kwargs、name。下面分別介紹。
regex
regex代表乙個正規表示式,凡是與regex匹配的url請求都會執行到url()函式中對應的第二個引數view代表的檢視函式中。需要注意的是:正規表示式不會匹配url中的網域名稱和查詢引數,如:只找article/。正規表示式在urlconf模組載入時就編譯好了,所以在匹配的時候速度是很快的。
正規表示式中遇到的一些情況:
1. 正規表示式字串的開頭字母「r」。它告訴python這是個原始字串,不需要處理裡面的反斜槓**義字元)。在普通python字串中,反斜槓用於特殊字元的轉義。當你用r把它標示為乙個原始字串後,python不再視其中的反斜槓為轉義字元。
2. url中常用的正規表示式符號:除了^ 和 $ 表示以開頭和結尾外還有一些正規表示式符號可能會用到:
view
django匹配正規表示式成功後,就會找到相應的檢視函式進行處理。這個函式通常寫在views中,關於views的詳細內容我們後面會views部分還會講解。
kwargs
kwargs就是乙個字典型別的引數,它的使用方式如:
url(r'^archive /(d)/$', archive, ),
這裡的kwargs 就是,可以直接向檢視函式對應的傳參,相當於字典方式傳參。另外還有一種方式為位置傳參,即(d)的部分。注意第乙個括號中的內容會傳給檢視函式的第二個引數(第乙個是request),第二個括號部分傳給第三個,以此類推。
檢視函式中就是這樣使用接收相應引數:
def archive(request, archive_id, dict):
name
name是為了提高模版的靈活性。djangotemplate中經常會有一些url的標識,如: /login"class="head">請登入|
這種硬編碼的方式,模版難以維護。內建標籤url,可以返回檢視函式對應的url(相對網域名稱的絕對路徑),比如url(r^/account/$』, views.index, name=index),使用將返回/accout/,這樣做可以方便修改。
include的使用
include函式對應返回值可以用作url函式的第二個引數,作為url的引用。例如:
# urls.py
from django.conf.urls import *
urlpatterns = patterns('',
from django.conf.urls import *
urlpatterns = patterns('',
(r'^archive/$', 'mysite.views.archive'), 對應的url實際是 blog/archive/
(r'^about/$', 'mysite.views.about'),
(r'^rss/$', 'mysite.views.rss'),
第乙個:
# urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^blog/', include('inner'), ),
# inner.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^archive/$', 'mysite.views.archive'),
(r'^about/$', 'mysite.views.about'),
(r'^rss/$', 'mysite.views.rss'),
第二個# urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^blog/', include('inner')),
# inner.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^archive/$', 'mysite.views.archive', ),
(r'^about/$', 'mysite.views.about', ),
(r'^rss/$', 'mysite.views.rss', ),
除錯模式
在url中經常用到一些除錯模式,決定有些url是否執行:
if settings.debug:
urlpatterns += patterns('',
(r'^debuginfo/$', views.debug),
重用命名組
上面我們講到向檢視函式中傳參,位置傳參不需要指定檢視函式中引數的名稱,但是通過下面的用法p?《引數名》 的方式可以強行指定檢視函式中必須對應那個名稱的引數
urlpatterns = patterns('',
(r'^articles/(?p\d)/$', views.year_archive),
(r'^articles/(?p\d)/(?p\d)/$',views.month_archive),
不同的url對應相同的處理函式
實際這種情況也經常發生,我們可以通過url的第三個引數傳入使用模板的名字,這樣不同的url對應相同的函式,使用不同模板。
urlpatterns = patterns('',
(r'^foo/$', views.foobar_view, ),
(r'^bar/$', views.foobar_view, ),
URL組成詳解
最近在學習js的ajax方面的內容,發現自己對基礎的計算機網路知識認識不足,所以大概了解了下。圖中中括號是可選項 首先,我們要知道全球資訊網不是網際網路,全球資訊網只是執行在網際網路上的乙個應用。它的功能就是能夠實現網路資源之間的互訪。最初的方式是通過ip位址來訪問的,但是ip位址是計算機或計算機組...
google 搜尋url詳解
www.google.com 360daohang hs yhe affdom 360.cn newwindow 1 start 10 amp sa n hl google搜尋的介面語言 inte ce language lr 搜尋內容的語言限定 language restrict 限定只搜尋某種語...
詳解URL的組成
就以下面這個url為例,介紹下普通url的各部分組成 從上面的url可以看出,乙個完整的url包括以下幾部分 1.協議部分 該url的協議部分為 http 這代表網頁使用的是http協議。在internet中可以使用多種協議,如http,ftp等等本例中使用的是http協議。在 http 後面的 為...