Django20——模板中使用带参数的反向路由(模板中的超链接,带参)


本节介绍如何在模板中使用反向路由,并传递参数。

1、修改模板

修改reverseTest1.html页面,增加内容如下:
在这里插入图片描述

<h1>带位置参数反向路由</h1>
{#re_path(r'^(\d+)/(\d+)/(\d+)/$',views.detail3,name='detail3'), #位置参数#}
<a href="/study/100/200/300/">普通链接</a><br>
<a href="{%url 'study:detail3' 100 200 300%}">模板中的反向路由:位置参数</a><br>

<h1>关键字参数反向路由</h1>
{#re_path(r'^keyword/(?P<p2>\d+)/(?P<p3>\d+)/(?P<p1>\d+)/$',views.detail3,name='detail5'),#}
<a href="/study/keyword/100/200/300/">普通链接</a><br>
<a href="{%url 'study:detail5' p2=100 p3=200 p1=300%}">模板中的反向路由:关键字参数</a><br>

2、查看效果

在这里插入图片描述
查看源文件如下:
在这里插入图片描述

3、小结

URL的反向解析,根据配置的URL名称动态生成链接地址,而不是将地址硬编码写死。如果在视图、模板中使用硬编码的链接,在urlconf发生改变时,维护是一件非常麻烦的事情。

  • 解决:在做链接时,通过指向urlconf的名称,动态生成链接地址
  • 视图:使用django.core.urlresolvers.reverse()函数
  • 模板:使用url模板标签

4、练习

将模板中的硬编码改成使用反向路由来实现
在这里插入图片描述

path('getTest1/',views.getTest1,name='getTest1'),
path('getTest2/', views.getTest2,name='getTest2'),
path('getTest3/', views.getTest3,name='getTest3'),
一键一值:<a href="{% url 'study:getTest2' %}?a=1&b=2&c=3">test2</a>
一键多值:<a href="{% url 'study:getTest3' %}?a=1&a=2&a=3"> test3</a>

在图书人物案例中,将模板中的硬编码改成使用反向路由实现。
在这里插入图片描述

path("",include(("apps.bh.urls",'bh'),namespace='bh')),
path('',views.get_book_title,name='get_book_title'),
path('<int:book_id>',views.get_book_heros,name='get_book_heros'),
path('heros/',views.get_book_heros2,name='get_book_heros2'),
<li><a href="{% url 'bh:get_book_heros2' %}?book_id={{ book.id }}">{{ book.btitle }}</a></li>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值