溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Django web框架使用url path name詳解

發(fā)布時間:2020-09-11 17:03:32 來源:腳本之家 閱讀:145 作者:農(nóng)夫 欄目:開發(fā)技術(shù)

quicktool/view.py文件修改視圖函數(shù)index(),渲染一個home.html模板

from django.shortcuts import render
def index(request):
  return render(request, 'home.html')

quicktool(應(yīng)用app)下創(chuàng)建一個templates文件夾(模板),在templates下創(chuàng)建一個home.html

<!DOCTYPE html>
<html>
<head>
  <title>學(xué)習(xí)Django</title>
</head>
<body>

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

</body>
</html>

mytestsite/urls.py文件將視圖函數(shù)index()對應(yīng)的網(wǎng)址取名name為home(只要這個名字不變,網(wǎng)址變了也能通過名字獲取到)

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'),  # 新增
]

運(yùn)行開發(fā)服務(wù)器,訪問http://127.0.0.1:8000/,可以看到

Django web框架使用url path name詳解

點擊標(biāo)簽a會執(zhí)行腳本進(jìn)行計算,但是home.html中代碼a標(biāo)簽的url是"寫死"的,我們可以通過url的name傳參,home.html增加以下代碼

#不帶參數(shù)的:
#{% url 'name' %}
#帶參數(shù)的:參數(shù)可以是變量名
#{% url 'name' 參數(shù) %}

<a href="/add2/4/5/" rel="external nofollow" rel="external nofollow" >計算 4+5</a>
<a href="{% url 'add2' 70 80 %}" rel="external nofollow" >計算 70+80</a>  # 新增

運(yùn)行開發(fā)服務(wù)器,訪問http://127.0.0.1:8000/,可以看到

Django web框架使用url path name詳解

點擊第一個a標(biāo)簽跳轉(zhuǎn)請求的url為http://127.0.0.1:8000/add2/4/5/

點擊第二個a標(biāo)簽跳轉(zhuǎn)請求的url為http://127.0.0.1:8000/add2/70/80/

第二個a標(biāo)簽的寫法是根據(jù)url name 值傳參進(jìn)行跳轉(zhuǎn),即根據(jù)mytestsite/urls.py文件的url path()的屬性值name匹配,再傳相應(yīng)的參數(shù)值,進(jìn)行"不寫死"請求。

在url path()的屬性值name不修改的前提下,修改url path()的第一個路徑參數(shù),那么a標(biāo)簽獲取的網(wǎng)址也會動態(tài)相應(yīng)變化。

比如

path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'), 

改成

path('add2/<int:a>/<int:b>/', quicktool_views.add2, name='add2'), 

除此,還需要寫一個跳轉(zhuǎn)到新地址的函數(shù),Django并不會自動更新跳轉(zhuǎn)地址

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

具體操作是,在quicktool/view.py文件寫一個跳轉(zhuǎn)函數(shù)

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詳解

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI