我遇到了Jinja2扩展和导入的问题。
base_admin.html
<html>
<body>
<div class="outerbody">
<somehtml code>
{% include "base_admin_nav.html" %}
{% include "base_admin_sidebar.html" %}
{% include "base_admin_content.html" %}
</div>
</body>
</html>
base_admin_content.html
<div class="innerbody">
{% block body_content %}
{% endblock %}
</div>
admin.html
{% extends 'base_admin.html' %}
{% block body_content %}
<div>BodyContent</div>
{% endblock %}
body_content中的代码未传递给base_admin_content.html。任何解决方法?
注意的
这与此不重复 jinja2: blocks in included files .. 包含在这里的不同文件中完成
定义
在{% macro admin_content() %}
insdidebase_admin_content.html
并使用base_admin.html
内导入
{% from "base_admin_content.html" import admin_content with context %}
{{ admin_content() }}.
也没有效果。
答案 0 :(得分:4)
好的,既然我知道你肯定需要包含,我就是这样做的:不应该包含base_admin_content.html
文件,你应该将admin.html
文件直接包含在base_admin.html
中。 admin.html
文件将扩展base_admin_content.html
,一切都应该正常工作:
<强> base_admin.html 强>
<html>
<body>
<div class="outerbody">
<somehtml code>
{% include 'admin.html' %}
</div>
</body>
</html>
<强> admin.html 强>
{% extends 'base_admin_content.html' %}
{% block body_content %}
<div>BodyContent</div>
{% endblock %}
<强> base_admin_content.html 强>
{% block innerbody %}
<div class="innerbody">
{% block body_content %}
{% endblock %}
</div>
{% endblock %}
在您的base_admin.html
文件中
{% include 'base_admin_content.html' %}
我们没有提及admin.html 的地方,这就是为什么 admin.html 文件中没有任何内容出现的原因!因此,我们应该这样做:
{% include 'admin.html' %}
因为它确实在扩展行中包含对 base_admin_content 的引用:
{% extends 'base_admin_content.html' %}
希望这有意义......