1. 程式人生 > >Django中reverse反轉並且傳遞引數

Django中reverse反轉並且傳遞引數

在寫專案的過程中,有些函式不可避免的需要傳入引數進去,所以我們在使用reverse進行反轉時也需要傳遞引數。這個時候我們就可以使用 ‘reverse()’ 中的 kwargs 引數了,它將傳入一個字典形式的變數。kwargs 也支援傳入多個引數

示例程式碼

首先在Django專案中新建一個‘reverse’的app用來測試。
在views.py中寫入以下程式碼

from django.shortcuts import render,redirect,reverse
from django.http import HttpResponse

# Create your views here.
def index(request): username = request.GET.get('username') if username: return HttpResponse('首頁') else: url = reverse('reverse:userInfo',kwargs={'user_id':10}) return redirect(url) def login(request): return HttpResponse('登入頁面') def userInfo(request,user_id)
: text = '你的id是: %s' % user_id return HttpResponse(text)

然後新建一個urls.py檔案,寫入程式碼

from django.urls import path
from . import views

app_name = 'reverse'

urlpatterns = [
    path('',views.index,name = 'index'),
    path('login/',views.login,name = 'login'),
    path('userInfo/<user_id>/'
,views.userInfo,name = 'userInfo') ]

在主urls.py中將reverse的urls包含進去

from django.urls import path,include

urlpatterns = [
	path('user/',include('reverse.urls'))
]

然後輸入就可以網址進行測試了。

如果想要新增查詢字串的引數,則必須手動的進行拼接。示例程式碼如下:
url = reverse('<反轉回的url地址>') + "?<查詢字元竄引數>=<查詢字元竄的值>"
return redirect(url)