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

Posted

技术标签:

【中文标题】使用字符串文字作为 Django 模板中模板标签的参数【英文标题】:Using string literals as parameters to template tags in Django templates 【发布时间】:2010-10-25 15:51:18 【问题描述】:

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

% url my-url 'my_param' %

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

my_context_dict['MY_PARAM'] = 'my_param'

然后在我看来代码:

% url my-url MY_PARAM %

或者创建一系列 URL 映射,我个人尽量避免。

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

【问题讨论】:

【参考方案1】:

使用双引号代替单引号:

% url my_view "my_param" %

【讨论】:

【参考方案2】:

这感觉不对,但其实是对的。

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

嵌套的"" 似乎不应该工作。他们是这样。 Django % % 材料只是简单地从 html 中提取出来,而不考虑周围的上下文。所以“重复的”" 根本没有真正重复。

【讨论】:

url.py urlpatterns 需要做哪些修改?【参考方案3】:

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

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

经过进一步调查,结果是this has changed in django 1.5。它现在甚至需要在 url 模式名称周围加上引号。

【讨论】:

以上是关于使用字符串文字作为 Django 模板中模板标签的参数的主要内容,如果未能解决你的问题,请参考以下文章

Django - 来自模板标签内变量的字符串

Django(十五)模板详解:模板标签过滤器模板注释模板继承html转义

Django模板,向模板标签发送两个参数?

字符串文字不允许作为非类型模板参数

Django 在模板标签中使用变量

在 Javascript 中使用 DJango 模板标签添加 Google 地图标记