反向生成url

2022-08-13 02:36:10 字數 3836 閱讀 6505

一.常規的url系統:

return httpresponse("進入index")

def text(requext):

return httpresponse("進入text")

urlpatterns = [

# url(r'^admin/', admin.site.urls),

url(r'^index/', index),

url(r'^text/', text),

]執行過程如下圖:

urlpatterns = [

# url(r'^admin/', admin.site.urls),

url(r'^arya/', site.urls),

url(r'^index/asdas/asdas/da/asd/as', index),

url(r'^text/dasd/asd/asd/sad/asd/as/d', text),

]

二、反向生成url

1.reverse方法

def index(request):

from django.urls import reverse

test_url = reverse('xx')

print(test_url)

return httpresponse("進入index")

def text(requext):

return httpresponse("進入text")

urlpatterns = [

url(r'^index/', index,),

url(r'^text/dasd/asd/asd/sad/asd/as/d', text,name='xx'),

]

列印的結果:

/text/dasd/asd/asd/sad/asd/as/d
這個url就是text的url路徑,所以通過給其定義乙個name就可以反向生成乙個其對應的url位址

2.帶引數的url的反向生成:

def index(request):

from django.urls import reverse

test_url = reverse('xx',args=(2,9))

return redirect(test_url)

def text(requext,*args,**kwargs):

return httpresponse("進入text")

urlpatterns = [

url(r'^index/', index,),

url(r'^text/dasd/asd/(\d+)/sad/(\d+)/as/d', text,name='xx'),

]

這裡需要注意的是當text中的url中需要傳參所以對應的text檢視函式中就需要*args,**kwargs接受引數

3.帶命名的正則url

def index(request):

from django.urls import reverse

test_url = reverse('xx',kwargs=)

return redirect(test_url)

def text(requext,*args,**kwargs):

return httpresponse("進入text")

urlpatterns = [

url(r'^index/', index,),

url(r'^text/dasd/asd/(?p\d+)/sad/(?p\d+)/as/d', text,name='xx'),

]

這裡和常規帶引數的唯一不同reverse方法中是傳遞乙個kwargs的鍵值對的字典

4.前端顯示反向url

渲染效果:

渲染效果:

1.單層巢狀

]上述的url中相當於巢狀了一層,且有namespance(x1,x2),所以對於這類的url的反向生成需要如下操作:

test_url = reverse('x1:txt')
2.多層巢狀
def index(request):

]

這裡雙層巢狀的url,但是內層的namespance都是空所以它會往外層找,所

以反向生成的**:

test_url = reverse('x1:txt')
同時當內層namespance有值時:

urlpatterns = [

# url(r'^admin/', admin.site.urls),

# url(r'^arya/', site.urls),

url(r'^userinfo/', (

[url(r'^index/', index,name='idx'),

url(r'^test/', text,name='txt')

],'x2','x2')),

] ,'x1','x1')),

]

反向生成url**就是如下:

所以通過上述的案例可以知道,不管url巢狀多少層,其反向生成url的規則是一樣的,遵循的規則就是namespance從外層以冒號連線至最後一層。

url 反向解析

1 定義 隨著功能的增加會出現更多的檢視,可能之前配置的正規表示式不夠準確,於是就要修改正規表示式,但是正規表示式一旦修改了,之前所有對應的超連結都要修改,真是一件麻煩的事情,而且可能還會漏掉一些超連結忘記修改,有辦法讓鏈結根據正規表示式動態生成嗎?就是用反向解析的辦法。2,應用範圍 模板中的超連結...

Django之URL反向解析

在反向解析和命名空間之前我們先來說說urls硬編碼,用django 開發應用的時候,可以完全是在urls.py 中硬編碼配置位址,在views.py中httpresponseredirect 也是硬編碼轉向位址,當然在template 中也是一樣了,這樣帶來乙個問題,如果在urls.py 中修改了某...

Django之url反向解析

在urls.py檔案中,在進行url對映時,為請求的url命個名,以便在模板頁面或者views.py檢視中可以進行反向解析,同時在修改了url對映的請求路徑,名稱不變的情況下,不再修改模板頁面或者檢視中的資料,專案不受影響正常執行!url標籤中使用模板變數 和普通標籤引數一樣,空格隔開,即可。url...