【问题标题】:Django: Refer to an url name in a template and passing parameterDjango:引用模板中的url名称并传递参数
【发布时间】: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>

还有其他一些技巧,但没有奏效。

有人可以帮忙吗?

【问题讨论】:

    标签: django


    【解决方案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 仍然更干净
    猜你喜欢
    • 2015-11-18
    • 2017-08-11
    • 2019-06-25
    • 2023-03-20
    • 2011-04-18
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多