url 反向解析

2021-08-28 03:21:28 字數 2232 閱讀 1668

1

,定義:

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

2,應用範圍:

模板中的超連結

檢視中的重定向

3,使用方法:

定義url時,需要為include定義namespace屬性,為url定義name屬性

使用時,在模板中使用url標籤,在檢視中使用reverse函式,根據正規表示式動態生成位址,減輕後期維護成本。

41)在專案urls.py中為include定義namespace屬性。

url(r』^』,include(『booktest.urls』,namespace=』booktest』)),

2)在應用的urls.py中為url定義name屬性,並修改為fan2。

url(r』^fan2/$』, views.fan2,name=』fan2』)

,3)在模板中使用url標籤做超連結,此處為templates/booktest/fan1.html檔案。

反向解析<

/title>

<

/head>

"/fan2/"

>普通fan2<

/a>

反向解析:"">反向解析fan2<

/a>

<

/body>

<

/html>12

3456

78910

114)回到瀏覽器中,後退,重新整理,檢視原始檔,兩個鏈結位址一樣。

這裡寫描述

5)在應用的urls.py中,將fan2修改為fan_show。

url(r』^fan_show/$』, views.fan2,name=』fan2』)

,6)回到瀏覽器中,重新整理,檢視原始檔,兩個鏈結位址不一樣。

這裡寫描述

4,檢視中的重定向:

from django.shortcuts import redirect

from django.core.urlresolvers import reverse

return redirect(reverse(

'booktest:fan2'))

1234

5,反向解析中url的引數

位置引數

1)在booktest/urls.py中,修改fan2如下:

url(r』^fan(\d+

)_(\d+

)/$』, views.fan2,name=』fan2』)

,2)修改templates/booktest/fan1.html檔案如下:

反向解析<

/title>

<

/head>

"/fan2_3/"

>fan2<

/a>

反向解析:"">fan2<

/a>

<

/body>

<

/html>12

3456

78910

3)回到瀏覽器中,重新整理,檢視原始檔如下圖:

這裡寫描述

使用重定向傳遞位置引數格式如下:

return redirect(reverse(『booktest:fan』, args=(2

,3))

)關鍵字引數

1)在booktest/urls.py中,修改fan2如下:

url(r'^fan(?p\d+)_(?p\d+)/$'

, views.fan2,name=

'fan2'),

12)修改templates/booktest/fan1.html檔案如下:

反向解析<

/title>

<

/head>

"/fan100_18/"

>fan2<

/a>

反向解析:"">fan2<

/a>

<

/body>

<

/html>12

3456

78910

3)回到瀏覽器中,重新整理,檢視原始檔如下圖:

這裡寫描述

使用重定向傳遞關鍵字引數格式如下:

return redirect(reverse(『booktest:fan2』, kwargs=

))

Django之URL反向解析

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

Django之url反向解析

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

django之url反向解析

在django中需要url 的地方,對於不同層級,django 提供不同的工具用於url 反查 1 在模板中 使用url 模板標籤。2 在python 中 使用 django.core.urlresolvers.reverse 函式。mydjango db.sqlite3 manage.py myd...