在Django模板中,使用字符串字面量作为模板标签的参数

10

我经常要做的一件事情是将字符串字面值作为模板标签或函数的参数传递;例如:

{% url my-url 'my_param' %}

很遗憾,Django模板引擎不允许你这样做。因此,我经常在视图代码中进行以下操作:

my_context_dict['MY_PARAM'] = 'my_param'

然后,在我的视图代码中:

{% url my-url MY_PARAM %}

或者创建一系列的URL映射,但我个人尽量避免这种方式。

在Django模板中是否可以使用字符串字面量?或者可能有更优雅的解决方案吗?我在这里和文档中都没有看到相关信息。

3个回答

14

这种感觉很奇怪,但是是正确的。

<a href="{% url someting "param1" "param2" %}">text</a>

看起来嵌套的 "" 不应该有效,实际上却有效。Django 的 {% %} 语法仅仅是从 HTML 中提取出来使用,不考虑周围的上下文。所以这些“重复”的" 其实并不是真正的重复。


在url.py urlpatterns中需要做哪些更改? - Ash Singh

12

使用双引号而不是单引号:

{% url my_view "my_param" %}

1
非常奇怪 - 我有一个使用单引号传递字符串值的 Django 项目,它可以正常运行。
<a href="{% url categories 'vendor' %}"</a>
<a href="{% url categories 'crew' %}"</a>

经过进一步调查,发现 在 Django 1.5 中已经发生了变化。现在甚至需要在 URL 模式名称周围加上引号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接