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 参数

Django - 将模型名称从 url 传递给视图

无论如何在 Django 的模板 url 函数中传递超过 2 个参数?

将模板变量从 URL 传递到 Django 中的 FormPreview

Django 模板:启用模板自动转义后,我是不是需要将 URL 传递给 URLEncode?

13.Django中几大常用模板标签讲解及实战使用 for循环;if判断;页面跳转;开启关闭自动转义;url携带参数传递;注释