Django學習筆記之URL標籤的使用

2022-05-10 01:01:33 字數 2583 閱讀 4458

期初用django 開發應用的時候,完全是在urls.py 中硬編碼配置位址,在views.py中httpresponseredirect()也是硬編碼轉向位址,當然在template 中也是一樣了,這樣帶來乙個問題,如果在urls.py 中修改了某個頁面的位址,那麼所有的地方(views.py和template中)都要修改。如果是個很大的工程,那麼要修改的地方就很多。當然,你也許會選擇乙個工具,直接查詢替換來實現。除此之外呢.....

其實django 本身就提供了這個功能,就是 url 標籤,利用 django 的 url 標籤來實現這樣的功能,在這個模組中:django/conf/urls/defaults

利用url 標籤之後,不管urlpatterns裡的某個位址叫法怎麼改變,templates裡的位址都不用修改了。在模版中呼叫url標籤的時候,需要:

比如沒有採用url函式的時候:

urlpatterns裡定義了資訊的首頁位址,

urlpatterns = patterns(''

,

(r'^article$

','news_index'),

)

templates裡的html為

資訊

urlpatterns = patterns(''

,

(r'^news$

','news_index'),

)

你會發現,你在templates中得修改10個資訊成資訊

可恨的是那樣的標籤分布在不同的頁面上,有更糟糕的時候就是 你不知道到底有多少個那樣的a標籤(總不能乙個個數嘛)。

有了url情況就大為不一樣了,

urlpatterns裡定義了資訊的首頁位址,

urlpatterns = patterns(''

,

url(r

'^article$

','news_index

' ,name="

news_index"),

)

templates裡的html為

"

">資訊

url(r'

^article$

','news_index

' ,name="

news_index

"),

templates裡 這樣使用

位址鏈結就能使用了。注意的是name是全域性的,你整個urlpatterns裡只能乙個唯一的name,這個道理應該好理解,就像**的位址也是唯一性的。

templates裡的用法簡單,在views裡怎麼用呢?以前在沒有使用的url函式的時候,可能指向乙個位址使用 

當然urlpatterns改變位址叫法的時候,所用的views的指向函式的引數都得跟著變。有了url函式,變成:

好處和template裡使用的情形一樣的。

當遇到urlpatterns的位址包含有引數的時候,如:

(r'

^(?p\d)/(?p\d)/$

','news_list

' ),

有兩個引數,最終的位址如歸檔的位址

情況變複雜點了,urlpatterns的以上的用法不變:

url(r'

^(?p\d)/(?p\d)/$

','news_list

',name="

news_archive

" ),

templates裡的用法就需要改改了,我們把url看成乙個方法,結合templates的語法,結果就出來了:

"

">2023年02月

或者這樣:

"">2023年02月

當然,在你後台的views.py 中的方法上也必須有這兩個引數,比如

def

news_list(request,year,month):

print

'year:

',year

print

'monty:

',month

......

後面的2010, 02 就是引數了,引數之間用逗號隔開,多少個引數用法都一樣的。當然,2010 02 引數是某個實體獲得的,具體的情況具體分析。而在views呢,有了引數怎麼寫,萬變不離宗

from django.core.urlresolvers import

reverse

......

reverse(

"news_archive

",kwargs=)

比如: return httpresponseredirect(reverse("news_archive",kwargs=))

即可,最後解析出來的位址為「/2010/02」。

由此看出,在用 django開發應用的時候,url 標籤是個很靈活的東西,應該多用,也為以後維護帶來方便。 

Django學習筆記之url路由

一 django中路由的作用 其本質是url與該url要呼叫的檢視函式之間的對映,就是為告訴django對客戶端發過來的某個url應該呼叫執行哪一段邏輯 二 路由基本的配置 from django.conf.urls import url urlpatterns必須是乙個由url 例項組成的pyth...

Django學習筆記之url路由及模板渲染方式

1.在專案目錄下urls.py檔案 2.在專案目錄建立了乙個views.py檔案 path 基本規則 path test views.test 使用尖括號 從url中捕獲值。包含乙個轉化器型別 converter type 沒有轉化器,將匹配任何字串,當然也包括了 字元 預設支援的轉換器 str,匹...

django學習筆記011 捕獲url引數

前面我們講到,django的mvt框架,在urls.py裡面利用正規表示式對http請求的url進行匹配,但是如何獲得http請求裡面的傳送的引數呢?利用正規表示式的分組進行獲取引數 url r books d views.detail d 為正規表示式裡面的組 獲取位置的引數,並傳給view裡面的...