7.Django5入门教程-路由反转(reverse)

一般我们都是 通过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"))
]

然后访问首页

http://127.0.0.1:8000/

终端会输出/

相当于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("这是首页")

重新刷新访问首页

可以看到终端的输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值