Jas*_*med 10 python inheritance include extend jinja2
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
base_admin_content.html
<div class="innerbody">
{% block body_content %}
{% endblock %}
</div>
Run Code Online (Sandbox Code Playgroud)
admin.html
{% extends 'base_admin.html' %}
{% block body_content %}
<div>BodyContent</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
body_content中的代码未传递给base_admin_content.html.任何解决方法?
注意
这不是包含文件中的这个jinja2:块的重复 ..包含在这里的不同文件中完成
定义
{% macro admin_content() %}insdidebase_admin_content.html和导入它的内部base_admin.html使用
{% from "base_admin_content.html" import admin_content with context %}
{{ admin_content() }}.
Run Code Online (Sandbox Code Playgroud)
也没有效果.
好的,既然我知道您肯定需要包含,那么我将这样做: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>
Run Code Online (Sandbox Code Playgroud)
管理.html
{% extends 'base_admin_content.html' %}
{% block body_content %}
<div>BodyContent</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
base_admin_content.html
{% block innerbody %}
<div class="innerbody">
{% block body_content %}
{% endblock %}
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
在您的base_admin.html文件中,您有
{% include 'base_admin_content.html' %}
Run Code Online (Sandbox Code Playgroud)
我们没有对 admin.html 的引用,这就是为什么admin.html文件中没有任何内容出现的原因!。因此,我们应该这样做:
{% include 'admin.html' %}
Run Code Online (Sandbox Code Playgroud)
因为它在扩展行中包含对base_admin_content的引用:
{% extends 'base_admin_content.html' %}
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的...