Django web框架使用url path name詳解
quicktool/view.py文件修改視圖函數(shù)index(),渲染一個(gè)home.html模板
from django.shortcuts import render def index(request): return render(request, 'home.html')
quicktool(應(yīng)用app)下創(chuàng)建一個(gè)templates文件夾(模板),在templates下創(chuàng)建一個(gè)home.html
<!DOCTYPE html> <html> <head> <title>學(xué)習(xí)Django</title> </head> <body> <a href="/add2/4/5/" rel="external nofollow" rel="external nofollow" >計(jì)算 4+5</a> </body> </html>
mytestsite/urls.py文件將視圖函數(shù)index()對(duì)應(yīng)的網(wǎng)址取名name為home(只要這個(gè)名字不變,網(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/,可以看到
點(diǎn)擊標(biāo)簽a會(huì)執(zhí)行腳本進(jìn)行計(jì)算,但是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" >計(jì)算 4+5</a> <a href="{% url 'add2' 70 80 %}" rel="external nofollow" >計(jì)算 70+80</a> # 新增
運(yùn)行開發(fā)服務(wù)器,訪問http://127.0.0.1:8000/,可以看到
點(diǎn)擊第一個(gè)a標(biāo)簽跳轉(zhuǎn)請(qǐng)求的url為http://127.0.0.1:8000/add2/4/5/
點(diǎn)擊第二個(gè)a標(biāo)簽跳轉(zhuǎn)請(qǐng)求的url為http://127.0.0.1:8000/add2/70/80/
第二個(gè)a標(biāo)簽的寫法是根據(jù)url name 值傳參進(jìn)行跳轉(zhuǎn),即根據(jù)mytestsite/urls.py文件的url path()的屬性值name匹配,再傳相應(yīng)的參數(shù)值,進(jìn)行"不寫死"請(qǐng)求。
在url path()的屬性值name不修改的前提下,修改url path()的第一個(gè)路徑參數(shù),那么a標(biāo)簽獲取的網(wǎng)址也會(huì)動(dò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'),
除此,還需要寫一個(gè)跳轉(zhuǎn)到新地址的函數(shù),Django并不會(huì)自動(dòng)更新跳轉(zhuǎn)地址
例如舊的地址收藏夾為/add2/4/5/,訪問時(shí)就會(huì)自動(dòng)跳轉(zhuǎn)到新的/new_add2/4/5/
具體操作是,在quicktool/view.py文件寫一個(gè)跳轉(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/,刷新后,可以看到
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法
這篇文章主要給大家介紹了關(guān)于Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法,Python生成(導(dǎo)出)csv文件其實(shí)很簡(jiǎn)單,我們一般可以用csv模塊或者pandas庫來實(shí)現(xiàn),需要的朋友可以參考下2023-07-07Python線程協(xié)作threading.Condition實(shí)現(xiàn)過程解析
這篇文章主要介紹了Python線程協(xié)作threading.Condition實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03python 專題九 Mysql數(shù)據(jù)庫編程基礎(chǔ)知識(shí)
在Python網(wǎng)絡(luò)爬蟲中,通常是通過TXT純文本方式存儲(chǔ),其實(shí)也是可以存儲(chǔ)在數(shù)據(jù)庫中的;同時(shí)在WAMP(Windows、Apache、MySQL、PHP或Python)開發(fā)網(wǎng)站中,也可以通過Python構(gòu)建網(wǎng)頁的,所以這篇文章主要講述Python調(diào)用MySQL數(shù)據(jù)庫相關(guān)編程知識(shí)2017-03-03淺談Python 命令行參數(shù)argparse寫入圖片路徑操作
這篇文章主要介紹了淺談Python 命令行參數(shù)argparse寫入圖片路徑操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07通過實(shí)例簡(jiǎn)單了解Python中yield的作用
這篇文章主要介紹了通過實(shí)例簡(jiǎn)單了解Python中yield的作用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Python實(shí)現(xiàn)簡(jiǎn)易過濾刪除數(shù)字的方法小結(jié)
這篇文章主要介紹了Python實(shí)現(xiàn)簡(jiǎn)易過濾刪除數(shù)字的方法,結(jié)合實(shí)例形式總結(jié)分析了Python基于正則及內(nèi)置函數(shù)過濾刪除數(shù)字的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01