像这样形成一个基本模板:
{% set styles = [] %}
<!DOCTYPE html>
<html>
<head>
{% for style in styles %}
<link href="{{style}}" ref="stylesheet" type="text/css; charset=utf8">
{% endfor %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
我想从子模板附加到styles
变量,但它会产生&#34;样式未定义&#34;。
{% extends "base.html" %}
{% do styles.append("index.css") %}
对此的一个解决方案是在从Python代码渲染模板时将styles
定义为空列表。但我不想为我呈现的每个模板添加styles=[]
。
不幸的是,导入也不起作用。它不会再告诉你&#34;样式未定义&#34;,但它只是在父模板的head部分中不会呈现。
{% extends "base.html" %}
{% from "base.html" import styles %}
{% do styles.append("index.css") %}
如何解决这个问题?
PS:如果要进行测试,则需要在扩展名中添加jinja2.ext.do
。
答案 0 :(得分:0)
您可以使用块
来实现此目的 base.html
看起来像这样
<!DOCTYPE html>
<html>
<head>
<link href="{{style}}" ref="stylesheet" type="text/css; charset=utf8"> {# all global css includes you need #}
{% block styles %}
{% endblock styles %}
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
然后child.html
看起来像这样:
{% extends "base.html" %}
{% block styles %}
<link href="{{style}}" ref="stylesheet" type="text/css; charset=utf8"> {# all css files you need #}
{% endblock styles %}