一般我们都是 通过url来访问视图函数,有时候我们知道这个视图函数,当时想要反转回他的url,这时候就需要通过reverse来实现
下面是做一些测试
在urls.py中创建测试代码
from django.contrib import admin
from django.urls import path,include
from book import views
from django.urls import reverse
from django.http import HttpResponse
def index(request):
print(reverse("index"))
return HttpResponse("这是首页")
urlpatterns = [
path('admin/', admin.site.urls),
path('',index,name='index'),
path('book',views.book_detail_query_string),
path('book/<int:book_id>',views.book_detail_path),
path('book/slug/<slug:book_id>',views.book_detail_path,name="book_slug"),
path('book/path/<path:book_id>',views.book_detail_path,name="book_path"),
path('movie/',include("movie.urls"))
]
然后访问首页
终端会输出/
相当于reverse("index") 通过index查询出了,他的url为/
例如查询book_slug,需要传递参数
reverse("book_slug",kwargs={"book_id":1})
def index(request):
# print(reverse("index"))
print(reverse("book_slug",kwargs={"book_id":1}))
return HttpResponse("这是首页")
重新浏览器访问首页
终端会输出如下
查询字符串传参
reverse("book_detail_query_string") + "?id=1"
def index(request):
# print(reverse("index"))
# print(reverse("book_slug",kwargs={"book_id":1}))
print(reverse("book_detail_query_string") + "?id=1")
return HttpResponse("这是首页")
urlpatterns = [
path('admin/', admin.site.urls),
path('',index,name='index'),
path('book',views.book_detail_query_string,name="book_detail_query_string"),
path('book/<int:book_id>',views.book_detail_path),
path('book/slug/<slug:book_id>',views.book_detail_path,name="book_slug"),
path('book/path/<path:book_id>',views.book_detail_path,name="book_path"),
path('movie/',include("movie.urls"))
]
重新刷新访问下首页
命名空间传参
reverse("movie:movie_list")
def index(request):
# print(reverse("index"))
# print(reverse("book_slug",kwargs={"book_id":1}))
# print(reverse("book_detail_query_string") + "?id=1")
print(reverse("movie:movie_list"))
return HttpResponse("这是首页")
重新刷新访问首页
可以看到终端的输出