07 Django URL 别名和 URL反向解析

URL 别名和 URL反向解析

我们自己写的 url 里面的路径有可能会更改,如果路径更改了,那么我们前端访问这个路径的标签
(a 标签,form表单等等)里面的属性值也需要手动去改了,这样我们拓展起来就不方便,想想一下
尤其是前端可能不是你写的,那么进行跨部门沟通,会很不方便。

Django 提供一个办法是让URL 映射是URL 设计唯一的地方。你填充你的URLconf,然后可以双向使用它:

  • 根据用户/浏览器发起的URL 请求,它调用正确的Django 视图,并从URL 中提取它的参数需要的值。
  • 根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。
    第一种方式就是直接写路径,第二种方式叫做反向解析URL、反向URL 匹配、反向URL 查询或者简单的URL 反查。
    在需要 URL 的地方,对于不同层级,Django 提供不同的工具用于 URL 反查:
  • 在模板中:使用url模板标签。
  • 在Python 代码中:使用django.core.urlresolvers.reverse() 函数。
  • 在更高层的与处理Django 模型实例相关的代码中:使用get_absolute_url() 方法。

别名举例子:

url(r'^home', views.home, name='home'),  # 给我的url匹配模式起名(别名)为 home,别名不需要改,路径你就可以随便改了,别的地方使用这个路径,就用别名来搞
url(r'^index/(\d*)', views.index, name='index'),  # 给我的url匹配模式起名为index

这样 在模板里面可以这样引用:

{% url 'home' %}  # 无参数的    模板渲染的时候,被django解析成了这个名字对应的那个url,这个过程叫做反向解析

在 views 函数中可以这样引用:

from django.urls import reverse

reverse("index", args=("2018", ))
视图:
	from django.urls import reverse
	reverse('别名')  reverse('abook') -- /add_book/  #不带参数的
	print(reverse('delete_book',args=(71,))) #/delete_book/71/ 带参数的
模板
	{% url 'abook' %}  无参数的
	{% url 'delete_book' book.id %}  带参数的

注意:
redirect 内部会自动调用 reverse 来进行反向解析
redirect(reverse(‘news-year-archive’, args=(year,)))
redirect(‘news-year-archive’,year) redirect内部会自动调用reverse来进行反向解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼古拉斯-kq

支持一下,感谢!!!!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值