1. 程式人生 > >django額外參數的傳遞和url命名

django額外參數的傳遞和url命名

技術分享 返回 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={
    pk: 20,id: 30,}), 6 ]

    傳入額外參數

    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
    HttpResponse(<h1>hello world</h1>) def login(request): return redirect(/teacher/info)

    視圖函數

    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命名