django 反向解析

反向解析: 當某一個url配置的地址發生變化時,頁面上使用反向解析生成地址的位置不需要發生變化。

比如:我們在視圖函數中定義的index視圖函數爲如下:

def index(request):
    return render(request, 'booktest/index.html')

我們的urls.py路由文件定義如下:

url(r'^index$', views.index),

現在是可以訪問的,但是問題來了,如果我們想換首頁的函數爲如下:

url(r'^index22$', views.index),

這樣的話,就沒辦法匹配了,如果還想讓視圖函數中的index函數進行匹配上的話,那麼可以用到反向解析這個方法。

1、 首先現在項目中的urls.py中定義我們應用booktest的路由url(r'^', include('booktest.urls', namespace='booktest')),,加上namespace='booktest'

2、然後在應用中的urls.py中定義我們路由url(r'^index22$', views.index, name='index'),,加上name='index' 就可以進行匹配了。

3、在模板文件中也要有相應的變化,index模板文件修改爲如下:

反向url解析:index<br>
<a href="{% url 'booktest:index' %}">index</a><br>

在模板文件中使用時,格式如下:
{% url 'namespace的名字:視圖函數名' %}
例如{% url 'booktest:fan2'%}


帶位置參數{% url 'namespace的名字:name' 參數 %}
例如{% url 'booktest:show_args' 1 2 %}

路由文件定義如下:

    url(r'^show_args/(\d+)/(\d+)', views.show_args, name='show_args'),

視圖函數定義如下:

def show_args(request, a, b):
    return HttpResponse(a + ":" + b)

模板文件定義如下:

動態url反向解析:可變位置參數show_args<br>
<a href="{% url 'booktest:show_args' 1 2 %}">show_args</a><br>

帶關鍵字參數{% url 'namespace的名字:name' 關鍵字參數 %}
例如{% url 'booktest:show_kwargs' c=3 d=4 %}

路由文件定義如下:

    url(r'^show_kwargs/(?P<c>\d+)/(?P<d>\d+)$', views.show_kwargs, name='show_kwargs')

視圖函數定義如下:

def show_kwargs(request, c, d):
    return HttpResponse(c + ":" + d)

模板文件定義如下:

動態url反向解析:可變位置參數show_kwargs<br>
<a href="{% url 'booktest:show_kwargs' c=3 d=4 %}">show_kwargs</a><br>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章