Django web框架-----url path name詳解

kristin_n發表於2019-04-23

quicktool/view.py檔案修改檢視函式index(),渲染一個home.html模板

from django.shortcuts import render
def index(request):
    return render(request, 'home.html')
複製程式碼

quicktool(應用app)下建立一個templates資料夾(模板),在templates下建立一個home.html

<!DOCTYPE html>
<html>
<head>
    <title>學習Django</title>
</head>
<body>

<a href="/add2/4/5/">計算 4+5</a>

</body>
</html>
複製程式碼

mytestsite/urls.py檔案將檢視函式index()對應的網址取名name為home(只要這個名字不變,網址變了也能通過名字獲取到)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', quicktool_views.index, name='home'),  # 新增name值
    path('add/', quicktool_views.add, name='add'),  # 新增
    path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),   # 新增
]
複製程式碼

執行開發伺服器,訪問http://127.0.0.1:8000/,可以看到

Django web框架-----url path name詳解

點選標籤a會執行指令碼進行計算,但是home.html中程式碼a標籤的url是"寫死"的,我們可以通過url的name傳參,home.html增加以下程式碼

#不帶引數的:
#{% url 'name' %}
#帶引數的:引數可以是變數名
#{% url 'name' 引數 %}

<a href="/add2/4/5/">計算 4+5</a>
<a href="{% url 'add2' 70 80 %}">計算 70+80</a>   # 新增
複製程式碼

執行開發伺服器,訪問http://127.0.0.1:8000/,可以看到

Django web框架-----url path name詳解
點選第一個a標籤跳轉請求的url為http://127.0.0.1:8000/add2/4/5/

點選第二個a標籤跳轉請求的url為http://127.0.0.1:8000/add2/70/80/

第二個a標籤的寫法是根據url name 值傳參進行跳轉,即根據mytestsite/urls.py檔案的url path()的屬性值name匹配,再傳相應的引數值,進行"不寫死"請求。

在url path()的屬性值name不修改的前提下,修改url path()的第一個路徑引數,那麼a標籤獲取的網址也會動態相應變化。

比如

path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),  
複製程式碼

改成

path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),  
複製程式碼

除此,還需要寫一個跳轉到新地址的函式,Django並不會自動更新跳轉地址

例如舊的地址收藏夾為/add2/4/5/,訪問時就會自動跳轉到新的/new_add2/4/5/

具體操作是,在quicktool/view.py檔案寫一個跳轉函式

from django.shortcuts import render
from django.http import HttpResponseRedirect
def old_add2_redirect(request, a, b):
    return HttpResponseRedirect(
        reverse('add2', args=(a, b))
    )
複製程式碼

mytestsite/urls.py檔案新增url

path('new_add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'),  # 新地址
path('add2/<int:a>/<int:b>/', quicktool_views.old_add2_redirect),   # 舊地址
複製程式碼

訪問http://127.0.0.1:8000/,重新整理後,可以看到

Django web框架-----url path name詳解

相關文章