之前的一篇文章中介紹了url的基本用法[]
解析的過程可以概括為<code>URL request -> view calling</code>
同時,django又提供了另一種解析方式 - Reverse resolution of URLs
它的解析過程為 <code>view calling -> URL request</code>
因為Django奉行的是DRY原則,是以使用這種方式,就無需對url位址進行寫死.在原本需要寫死url的地方,直接可以使用url的名字,然後逆向解析出url位址.
Django提供了不同層面上的url解析方法.
template檔案: 用url模闆标簽
python代碼中可以使用django.core.urlresolvers.reverse()
其他get_absolute_url()
以一個簡單的部落格url規則來舉例說明,導航頁面如下
導覽列的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的代碼