【发布时间】:2018-06-14 12:37:09
【问题描述】:
我正在尝试包含一个 .html 使用
{% include "paintings/experiments/points/{{substance.name}}.html" %}
然而这会导致错误TemplateDoesNotExist。
如果我硬编码 .html 文件的名称,它确实有效。
{% include "paintings/experiments/points/fabric.html" %}
事实上,我可以在包含的 html 中使用 {{substance.name}},如果它确实被 fabric 取代。为什么在使用包含标签时不能使用 django 变量?
【问题讨论】:
-
因为它不是为了那样使用而设计的。模板名称可以是字符串或变量,不能同时是两者。
-
查看重复的答案。在您的情况下,您需要使用两次
add:过滤器,例如"paintings/experiments/points/"|add:substance.name|add:".html"。如果您在视图中设置include_template_name = "paintings/experiments/points/%s.html" % substance.name,然后在模板中使用{% include include_template_name %},您可能会发现代码更清洁。 -
@Alasdair 谢谢。我正在专门搜索包含标签,现在我找不到任何东西是有道理的。
-
@Alasdair。它似乎不起作用。使用
{% include "paintings/experiments/points/"|add:substance.name|add:".html" %}返回UnicodeEncodeError at /mturk/external/task/120/ 'ascii' codec can't encode characters in position 132-133: ordinal not in range(128)。这很奇怪,因为该行甚至没有 133 个字符长。 -
抱歉,我无法从该错误消息中判断出问题所在。
标签: django