說明:mytestsite是django框架下的項目,quicktool是mytestsite項目中的應用html
quicktool/view.py文件修改視圖函數index(),渲染一個home.html模板django
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(只要這個名字不變,網址變了也能經過名字獲取到)app
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/,能夠看到框架
點擊標籤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/,能夠看到學習
點擊第一個a標籤跳轉請求的url爲http://127.0.0.1:8000/add2/4/5/ui
點擊第二個a標籤跳轉請求的url爲http://127.0.0.1:8000/add2/70/80/url
第二個a標籤的寫法是根據url name 值傳參進行跳轉,即根據mytestsite/urls.py文件的url path()的屬性值name匹配,再傳相應的參數值,進行"不寫死"請求。htm
在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/,刷新後,能夠看到