通过django的url反转函数reverse()函数,实现带参数的url的反转
首先,我们定义了这样的几个url:
创建了一个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'
我们的反转需求是:当用户登陆首页时,如果没有附带用户名username
参数,就通过url反转和重定向返回到book
app的'detail/<book_id>'详情页面,其中'detail/<book_id>'页面是附带请求参数的
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
来传递参数
还有的url是附带诸如?q=xxx
的形式的,这样的参数应该如何通过url反抓来获得呢?
与上述方法类似,不同的是:
reverse_url =reverse('book:details')+"?next=/"
这样就可以实现带请求参数的url反转。