如何将文字字符串值传递给 django url 模板标签

Posted

技术标签:

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

我有一个这样的 URL conf:

url(r'^value-toggle/(?P<profile_id>\d1,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 模板标签?

【问题讨论】:

【参考方案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 标记需要在页面名称周围加上引号,而另一种则不需要引号。我不记得我的头顶需要它们,但尝试两种方法,看看它是否能解决你的问题。

以上是关于如何将文字字符串值传递给 django url 模板标签的主要内容,如果未能解决你的问题,请参考以下文章

Django,如何在提交表单时将 HTML 表单值传递给 URL?

如何将Django中列表的值传递给方法?

使用 Django 和 Jquery 将选择选项值传递给命名的 url 模式

Urls.py 无法将#(pound) 字符传递给 Django 中的视图,

如何将一些信息传递给视图而不将其包含在 URL 中(django 新手)

如何给url传递动态参数值?