天天看點

Django中url的逆向解析 -> Reverse resolution of URLs

之前的一篇文章中介紹了url的基本用法[]

解析的過程可以概括為<code>URL request -&gt; view calling</code>

同時,django又提供了另一種解析方式 - Reverse resolution of URLs

它的解析過程為 <code>view calling -&gt; URL request</code>

因為Django奉行的是DRY原則,是以使用這種方式,就無需對url位址進行寫死.在原本需要寫死url的地方,直接可以使用url的名字,然後逆向解析出url位址.

Django提供了不同層面上的url解析方法.

template檔案: 用url模闆标簽

python代碼中可以使用django.core.urlresolvers.reverse()

其他get_absolute_url()

以一個簡單的部落格url規則來舉例說明,導航頁面如下

Django中url的逆向解析 -&gt; Reverse resolution of URLs

導覽列的category都是從資料庫讀出的資料,其中每個category都是形如/blog/category/category_name的超連結,具體如下

/blog/category/home/

/blog/category/python/

/blog/category/android/

/blog/category/reading/

是以我們的url規則可以設計成如下形式

這樣category的名字會被當做參數傳遞給<code>category</code>這個view.同時給這條url規則命名為<code>list_category</code>.

模闆檔案中,生成導覽列的代碼如下

如果文章清單需要分頁,可以再添加一個url規則

分頁顯示的模闆代碼

最後是view的代碼