Django:引用模板中的url名称并传递参数
Posted
技术标签:
【中文标题】Django:引用模板中的url名称并传递参数【英文标题】:Django: Refer to an url name in a template and passing parameter 【发布时间】:2016-09-30 17:38:27 【问题描述】:我知道您可以在模板中引用 urlname,这样您就无需在想要更改它们时在模板中硬编码您的 url 链接。
例如在模板中,我使用:
<a href="% url 'urlname' parameter %">The link</a>
我的问题是,如果我想传递一个更复杂的参数以在 url 正则表达式中使用。就我而言,我想传递由“_”分隔的两个字符串的串联。这些字符串来自 Python 对象,我不知道该怎么做。例如,这些字符串是用户的名字和姓氏。
我试过了:
<a href="% url 'urlname' "user.firstname_user.lastname" %">The link</a>
还有其他一些技巧,但没有奏效。
有人可以帮忙吗?
【问题讨论】:
【参考方案1】:请看一下这个thread。假设您使用的是位置参数,这对您来说是个好答案:
<a href="% url 'urlname' parameter=user.firstname_user.lastname %">The link</a>
假设你的 url conf 是这样的:
url(r'^urlname/(?P<parameter>(catching regexp))$',...)
【讨论】:
如果你认为某个问题是重复的,那么你应该留下一个链接作为评论(然后当你有 3k+ 代表时投票关闭) 可能是重复的,但他的情况可能没有涵盖。【参考方案2】:简单地说,你没有。
您可以调整您的 url 以拥有两个捕获组(这也需要对视图稍作更改)
url(r'(?P<first_name>\w+)_(?P<last_name>\w+)/$', view_name, name='url_name')
% url 'urlname' user.firstname user.lastname %
或者你只是找到一个不同的网址就足够了。
【讨论】:
^^ 其实你这么一说,就是这么合乎逻辑!尽管如此,我还是发现了一个“with关键字”和“add函数”的技巧,但它很脏...... @MarAja - 听起来你最好创建一个自定义模板标签,尽管创建一个 url 仍然更干净以上是关于Django:引用模板中的url名称并传递参数的主要内容,如果未能解决你的问题,请参考以下文章
无论如何在 Django 的模板 url 函数中传递超过 2 个参数?
将模板变量从 URL 传递到 Django 中的 FormPreview
Django 模板:启用模板自动转义后,我是不是需要将 URL 传递给 URLEncode?
13.Django中几大常用模板标签讲解及实战使用 for循环;if判断;页面跳转;开启关闭自动转义;url携带参数传递;注释