django額外參數的傳遞和url命名
阿新 • • 發佈:2019-04-03
技術分享 返回 import hello quest cut 捕獲 clas info
django額外參數的傳遞
path方法:path(route, view, kwargs=None, name=None)
- path方法可以傳遞入一個額外參數的字典參數(kwarg),字典裏的值就會被傳給視圖函數。
- 傳入的字典裏的key必須在視圖函數的參數裏,否則會報錯。
- 當字典參數裏的key和url捕獲的參數一致時,以額外參數(kwargs)裏的為準。
1 from django.urls import path 2 from .views import * 3 4 urlpatterns = [ 5 path(‘index/<pk>/‘, index, kwargs={‘
傳入額外參數
1 from django.shortcuts import render, HttpResponse 2 3 # Create your views here. 4 5 6 def index(request, pk, id): 7 return HttpResponse(‘你輸入的參數是pk:{}-id:{}‘.format(pk, id))
視圖函數
返回結果中輸入的pk參數是5,但是默認的kwargs裏是20,最終以額外參數裏的為準。
url命名
path方法裏面最後還有個name參數,默認為None,現在有以下場景:
- 當訪問莫一頁面時,需要跳轉到另一頁面
from django.shortcuts import render, HttpResponse, redirect # Create your views here. def index(request, pk, id): return HttpResponse(‘你輸入的參數是pk:{}-id:{}‘.format(pk, id)) def show_info(request): return
視圖函數
1 from django.urls import path 2 from .views import * 3 4 urlpatterns = [ 5 path(‘index/<pk>/‘, index, kwargs={‘pk‘: 20,‘id‘: 30,}), 6 path(‘info/‘, show_info), 7 path(‘login/‘, login), 8 ]
路由配置
- 利用django的redirect方法實現頁面的跳轉,redirect裏面傳入一個路徑的字符串。
- 當訪問login的時候,直接給跳轉到了info頁面。
- 假設以後info頁面的路徑發生了改變,當有很多頁面都跳向該頁面的時候,人為的手動去修改redirect裏面的路徑會很麻煩。這時候就要用到django的path方法提供的name參數了。
1 from django.shortcuts import render, HttpResponse, redirect, reverse 2 3 # Create your views here. 4 5 6 def index(request, pk, id): 7 return HttpResponse(‘你輸入的參數是pk:{}-id:{}‘.format(pk, id)) 8 9 10 def show_info(request): 11 return HttpResponse(‘<h1>hello world</h1>‘) 12 13 14 def login(request): 15 url = reverse(‘info‘) 16 return redirect(url)
1 from django.urls import path 2 from .views import * 3 4 urlpatterns = [ 5 path(‘index/<pk>/‘, index, kwargs={‘pk‘: 20,‘id‘: 30,}), 6 path(‘info/‘, show_info, name=‘info‘), 7 path(‘login/‘, login), 8 ]
- 首先在需要跳轉的頁面的path方法裏面,給該路由命名。加上name=‘info‘。
- 利用django提供的reverse方法,reverse方法接收一個字符串,該字符串為url的名字。該方法返回該名字的url的路徑,再將這個路徑重新賦予給redirect實現動態跳轉。
django額外參數的傳遞和url命名