通過django的url反轉(zhuǎn)函數(shù)reverse()函數(shù)棍苹,實(shí)現(xiàn)帶參數(shù)的url的反轉(zhuǎn)
首先,我們定義了這樣的幾個(gè)url:
創(chuàng)建了一個(gè)book
app扁耐,
from django.urls import path
from . import views
app_name='book'
urlpatterns =[
path('',views.book),
path('detail/<book_id>',views.bookdetail,name='details'),
path('author_id/',views.author_id,name='author_id'),
]
命名空間為app_name='book'
我們的反轉(zhuǎn)需求是:當(dāng)用戶登陸首頁時(shí)自娩,如果沒有附帶用戶名username
參數(shù),就通過url反轉(zhuǎn)和重定向返回到book
app的'detail/<book_id>'詳情頁面个唧,其中'detail/<book_id>'頁面是附帶請求參數(shù)的
urlpatterns = [
path('', index),]
def index(request):
username = request.GET.get('username')
if username:
return HttpResponse("這是首頁")
else:
reverse_url = reverse('book:details',kwargs = {'book_id':1})
return redirect(reverse_url)
通過kwargs
來傳遞參數(shù)
還有的url是附帶諸如?q=xxx
的形式的江解,這樣的參數(shù)應(yīng)該如何通過url反抓來獲得呢?
與上述方法類似徙歼,不同的是:
reverse_url =reverse('book:details')+"?next=/"
這樣就可以實(shí)現(xiàn)帶請求參數(shù)的url反轉(zhuǎn)犁河。