Django框架 - reverse()函数全解

Django框架学习笔记 - reverse()函数全解

url反向解析是指在视图或模板中,用定义的路由名称来动态查找或计算出响应的路由。

一般用在模板中的超链接视图中的重定向

优点是当路由层的url发生改变时,只要命名空间和路由名称不变,视图层和模板层会动态地反向解析出修改后的url,就不需要我们一个一个地手动修改了。

reverse()函数

在视图中,我们可以调用 reverse() 函数来进行反向解析。

reverse(viewname, args=None, kwargs=None, current_app=None, urlconf=None)

viewname 可以是你在path()中定义的路由别名name,也可以是可调用的视图函数对象。
argskwargs 是路由参数,二者不能同时传递
current_app 用于向解释器说明当前属于哪个应用程序;默认情况下会查找与命名空间同名的实例,如果找不到实例,将会引用最后一次部署的应用程序实例。
urlconf 是 URLconf 模块,默认情况下为当前线程的根 URLconf。

reverse() 返回一个 字符串 url,且 已经被转义

下面我们用几个例子来学习reverse()的几种用法:
我的Django版本:4.2.2
项目名称:djangoProject
有一个子应用:note

1. 一般路由

语法1:reverse('路由别名')
语法2:reverse(视图函数对象) (不推荐)

# urls.py
urlpatterns = [
    # 一个普通路由index/,别名为index
    path('index/', views.index, name='index'),
]
# 反向解析路由别名为"index"的url
>>> reverse('index')
'/index/'

# 反向解析视图函数对象为views.index的url(不推荐)
>>> reverse(views.index)
'/index/'

2. 命名空间

语法1:reverse('实例命名空间:路由别名')
语法2:reverse('应用命名空间:路由别名', current_app='实例命名空间')

# urls.py
urlpatterns = [
    # 分发路由admin_note/,实例命名空间admin_note
    path('admin_note/', include('note.urls', namespace='admin_note')),
    # 分发路由user_note/,实例命名空间user_note
    path('user_note/', include('note.urls', namespace='user_note')),
]


# note/urls.py
app_name = "note"		# 应用命名空间note
urlpatterns = [
    path('index/', views.index, n
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值