Django的URL反向解析
阿新 • • 發佈:2021-12-02
Django的URL反向解析功能在模板檔案中和Python程式中有不同的呼叫方法:
- 在模板檔案中用{%url%}標籤反向解析
- 在Python程式中有django.urls.reverse()函式呼叫反向解析
url對映規則:
from django.urls import path,include from app import views urlparterns = [ path('login/', views.login,name='login') ]
其中定義了一個URL對映,並通過name引數將該對映命名為login。在需要獲得該URL的模板檔案中可以通過{%URL%}標籤進行聲名,比如:
<a href="{% URL 'login' %}"> Login </a>
其中用對映名“login”作為反向解析的引數,該模板解析後的結果為:
<a href="/login/"> Login </a>
而在Python程式碼與模板檔案中的反向解析呼叫方式是使用reverse函式,比如:
from django.shortcuts import redirect from django.urls import reverse def login(request): return redirect(reverse(index))
帶引數的反向解析:反向解析還支援在URL路徑和被呼叫函式中有引數的情況,比如對於帶引數的對映:
from django.urls import path,inlude from app import views urlpatterns = [ path('index/?P<user_id>',views.index,name='re_index'), ]
然後在模板檔案反向解析中,可以直接在{%URL%}標籤中新增引數,如:
<a href="{% URL 're_index',1 %}"> 使用者user_id為1 </a> <!--解析後結果為--> <a href="/index/1/"> 使用者user_id為1 </a>
在Python程式中反向解析如下:
from django.urls import reverse from django.shortcuts import redirect def redirect_to_index_1(request): return redirect(reverse(index,args=(1,)))