Django 模板嵌套包含传递变量
Django template nested include passing variables
我使用 django 模板 index.html
来渲染首页。它包括另一个用于创建 link 图标的模板。此模板 url_icon.html
包含另一个模板 icon.html
。在传递参数时,我遇到了一个错误。如何解决?
index.html
.
.
.
{% include "url_icon.html" with name="return" url="/" %}
.
.
.
url_icon.html
<a href="{{url}}">{% include "icon.html" with icon={{ name }} %}</a>
icon.html
<img src="/static/images/{{ name }}.png" />
导致错误:
Could not parse the remainder: '{{' from '{{'
看起来您可以做一些事情 improve/fix。解决#1 和#2 应该可以解决您的问题。我还添加了可能需要重构的最佳实践建议(#3、#4)。
- 您似乎需要从
name
中删除 {% include %}
标签内的 curly-braces。无需额外语法即可在标签内使用上下文变量。
url_icon.html:
{% include "icon.html" with icon=name %}
- icon.html 将有权访问
name
,因为您在更新其上下文时没有使用 only
关键字,因此您的代码一开始可能看起来有效({% include %} documentation).但是,您的意图似乎是将其称为 icon
.
- 使用变量
icon
代替 name
icon.html:
<img src="/static/images/{{ icon }}.png" />
- 可选建议:使用 Django 的静态文件系统
尝试为您的图标使用 {% static %}
标签。这将有助于简化部署,尤其是当您使用与网络服务器不同的 CDN 时。有很多关于如何在生产中为 Django 项目设置静态文件的文献,这是一个很大的话题,但如果您从一开始就使用 {% static %}
标签,您将能够更轻松地处理它。
- 可选建议:Django的URL路由系统
您在 index.html
的路线是 hard-coded 到 "/"
。 Django 有一个强大的 URL 引用系统可以利用。如果您也使用 Django 定义了根 URL /
,您可以通过名称引用它。 Docs: {% url %}, and for the back-end, reverse().
我使用 django 模板 index.html
来渲染首页。它包括另一个用于创建 link 图标的模板。此模板 url_icon.html
包含另一个模板 icon.html
。在传递参数时,我遇到了一个错误。如何解决?
index.html
.
.
.
{% include "url_icon.html" with name="return" url="/" %}
.
.
.
url_icon.html
<a href="{{url}}">{% include "icon.html" with icon={{ name }} %}</a>
icon.html
<img src="/static/images/{{ name }}.png" />
导致错误:
Could not parse the remainder: '{{' from '{{'
看起来您可以做一些事情 improve/fix。解决#1 和#2 应该可以解决您的问题。我还添加了可能需要重构的最佳实践建议(#3、#4)。
- 您似乎需要从
name
中删除{% include %}
标签内的 curly-braces。无需额外语法即可在标签内使用上下文变量。
url_icon.html:
{% include "icon.html" with icon=name %}
- icon.html 将有权访问
name
,因为您在更新其上下文时没有使用only
关键字,因此您的代码一开始可能看起来有效({% include %} documentation).但是,您的意图似乎是将其称为icon
.
- 使用变量
icon
代替name
icon.html:
<img src="/static/images/{{ icon }}.png" />
- 可选建议:使用 Django 的静态文件系统
尝试为您的图标使用 {% static %}
标签。这将有助于简化部署,尤其是当您使用与网络服务器不同的 CDN 时。有很多关于如何在生产中为 Django 项目设置静态文件的文献,这是一个很大的话题,但如果您从一开始就使用 {% static %}
标签,您将能够更轻松地处理它。
- 可选建议:Django的URL路由系统
您在 index.html
的路线是 hard-coded 到 "/"
。 Django 有一个强大的 URL 引用系统可以利用。如果您也使用 Django 定义了根 URL /
,您可以通过名称引用它。 Docs: {% url %}, and for the back-end, reverse().