Django反向解析系

2021-09-11 04:39:53 字數 1583 閱讀 3459

1,定義:

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

2,應用範圍:

模板中的超連結

檢視中的重定向

3,使用方法:

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

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

1)在專案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檔案。

反向解析:反向解析fan2

1234

5678

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

這裡寫描述

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

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

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

from django.shortcuts import redirect

from django.core.urlresolvers import reverse

return redirect(reverse('booktest:fan2'))12

345,反向解析中url的引數

位置引數

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

url(r』^fan(\d+)_(\d+)/$』, views.fan2,name=』fan2』),

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

反向解析:fan2

1234

5678

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

這裡寫描述

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

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

關鍵字引數

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

url(r'^fan(?p\d+)_(?p\d+)/$', views.fan2,name='fan2'),

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

反向解析:fan2

1234

5678

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

這裡寫描述

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

django 反向解析

反向解析 當某乙個url配置的位址發生變化時,頁面上使用反向解析生成位址的位置不需要發生變化。比如 我們在檢視函式中定義的index檢視函式為如下 def index request return render request,booktest index.html 我們的urls.py路由檔案定義...

Django 反向解析應用

1.專案路由配置 from django.conf.urls import url,include from django.contrib import admin urlpatterns url r fanxiangjiexi views.fxjx url r tiaozhuan views.tz...

django反向解析和正向解析

index頁面載入的效果 test result 1所謂正向解析就是直接在這裡寫位址 向urls.py裡面一樣 例如 test p1 p2 所謂反向解析就是根據命名來調到指定的頁面,這裡表示的是跳轉到booktest模板下面的fortest2這個檢視裡面,而這個fortest2正是我們定義的名字,後...