Django中reverse反轉並且傳遞引數
阿新 • • 發佈:2018-11-01
在寫專案的過程中,有些函式不可避免的需要傳入引數進去,所以我們在使用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)