url函式詳解

2021-07-24 17:25:52 字數 2930 閱讀 5272

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 後面的 為...