使用字符串文字作为Django模板中模板标记的参数

时间:2009-05-12 19:22:42

标签: django templates django-templates

我经常发现的一件事就是将字符串文字作为参数传递给模板标签或函数;例如:

{% url my-url 'my_param' %}

不幸的是,django模板引擎不允许你这样做。所以我发现自己在我的视图代码中做了很多这样的事情:

my_context_dict['MY_PARAM'] = 'my_param'

然后在我的视图代码中:

{% url my-url MY_PARAM %}

或者创建一系列URL映射,我个人试图避免这种情况。

是否可以在Django模板中使用字符串文字?或者可能是更优雅的解决方案?我在这里或文档中没有看到任何内容。

3 个答案:

答案 0 :(得分:13)

这感觉不对,但是对。

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

嵌套的""看起来不应该起作用。他们是这样。 Django {% %}材料只是从HTML中拉出而不考虑周围的上下文。所以“重复的”"并没有真正重复。

答案 1 :(得分:12)

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

{% url my_view "my_param" %}

答案 2 :(得分:1)

非常奇怪 - 我有一个django项目,它使用单引号传递一个字符串值,它运行正常。

<a href="{% url categories 'vendor' %}"</a>
<a href="{% url categories 'crew' %}"</a>

进一步调查结果显示this has changed in django 1.5。现在它甚至需要在url模式名称周围使用引号。