Python 2.7 Jinja2使用父模板中的变量
将基本模板镜像如下:Python 2.7 Jinja2使用父模板中的变量,python-2.7,jinja2,Python 2.7,Jinja2,将基本模板镜像如下: {% set styles = [] %} <!DOCTYPE html> <html> <head> {% for style in styles %} <link href="{{style}}" ref="stylesheet" type="text/css; charset=utf8"> {% endfor %} </head> <body> {% b
{% 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>
{% extends "base.html" %}
{% block styles %}
<link href="{{style}}" ref="stylesheet" type="text/css; charset=utf8"> {# all css files you need #}
{% endblock styles %}
解决这个问题的一个方法是,在从Python代码呈现模板时,将样式定义为空列表。但我不想将style=[]
添加到我渲染的每个模板中
不幸的是,导入也不起作用。它不会再告诉您“样式未定义”,但它不会在父模板的头部分进行渲染
{% extends "base.html" %}
{% from "base.html" import styles %}
{% do styles.append("index.css") %}
如何解决这个问题
PS:如果您想测试它,您需要向扩展添加jinja2.ext.do
。您可以使用块来实现这一点
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>
{% extends "base.html" %}
{% block styles %}
<link href="{{style}}" ref="stylesheet" type="text/css; charset=utf8"> {# all css files you need #}
{% endblock styles %}