【问题标题】:How to pass a literal string value to the django url template tag如何将文字字符串值传递给 django url 模板标签
【发布时间】:2012-02-02 08:03:18
【问题描述】:

我有一个这样的 URL conf:

url(r'^value-toggle/(?P<profile_id>\d{1,10})/(?P<on_or_off>on|off)/$', 
                           'clipfo.profile.views.value_toggle',
                           name='value-toggle'),

在我的模板中,我正在尝试链接到它:

<a href="{% url value-toggle profile_id=profile.id on_or_off='off' %}">Turn off</a>.

查看包含 url 标签的页面时出现以下错误:

渲染时捕获 NoReverseMatch:Reverse for 带有参数“()”和关键字的“值切换” 参数 '{'profile_id': 5, 'on_or_off': '### FIX ME - 模板错误 变量 ###'}' 未找到。

请注意“### FIX ME - bad template variable ###”是我的TEMPLATE_STRING_IF_INVALID 值。

如何将文字“off”作为命名参数on_or_off 的值传递给url django 模板标签?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    未来拯救了我!

    刚刚打电话

    {% load url from future %}
    

    在我的模板的开头。

    使用未来的 url 标签让我可以做我需要做的事情。我只需要将 url 的名称用单引号括起来,例如:

    <a href="{% url 'value-toggle' profile_id=profile.id on_or_off='off' %}">Turn off</a>.
    

    【讨论】:

    • 嗯,这很奇怪。我认为 Django 1.5 中的 url 模板标签(future 使用的语法)只允许使用上下文变量作为第一个参数,无论如何都要通过引用来避免。
    • 从未来加载 url 对我不起作用...:/ 仍然出现“无反向”错误
    • 注意引号。一种版本的 url 标记需要在页面名称周围加上引号,而另一种则不需要引号。我不记得我的头顶需要它们,但尝试两种方法,看看它是否能解决你的问题。
    猜你喜欢
    • 2015-11-12
    • 2013-10-21
    • 2017-12-14
    • 2016-02-15
    • 2021-02-24
    • 2011-01-08
    • 2021-06-05
    • 2019-02-11
    • 2021-09-02
    相关资源
    最近更新 更多