django - 将模板的一部分重构为自己的文件会破坏 django
问题描述
我有一些奇怪的东西:我有一个base.html
作为网站块的骨架。它包含这部分:
<main class="main">
{% block main %}
<div class="content">
{% block content %}
content
{% endblock %}
</div>
{% endblock %}
</main>
我也有一个base_with_sidebar.html
看起来像这样的:
{% extends "core/base.html" %}
{% block main %}
{{ block.super }}
<div class="sidebar">
{% block sidebar %}
{% include "polls/recent_polls.html" %}
{% endblock %}
</div>
{% endblock %}
并index.html
填充内容:
{% extends "app/base_with_sidebar.html" %}
{% block content %}
somecontent
{% endblock %}
到目前为止,这一切都有效。
如果我想重构,就会出现问题base.html
:从此:
<main class="main">
{% block main %}
<div class="content">
{% block content %}
content
{% endblock %}
</div>
{% endblock %}
</main>
对此:
base.html
<main class="main">
{% block main %}
{% include './main.html' %}
{% endblock %}
</main>
main.html
<div class="content">
{% block content %}
content
{% endblock %}
</div>
这导致我index.html
总是显示“内容”——而不是block content
在index.html
解决方案
您不能覆盖包含模板中的块:
块在被包含之前被评估。这意味着包含来自另一个块的模板将包含已经评估和渲染的块 - 而不是可以被例如扩展模板覆盖的块。
https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#include
推荐阅读
- angular - 在 loadchildren 路径中导航不起作用
- awk - awk 关联数组增量
- mapstruct - Mapstruct:将对象列表映射到两个字符串/ UUID列表
- python - 如何确保两个参数具有可比性?
- python - 使用 Google Sheets API 在一个单元格中创建多个链接
- javascript - firebase(firestore)和vuejs + vuefire的非常奇怪的反应性问题
- python - 通过脚本安装多个python模块
- node.js - 通过 docker compose 运行 Angular 8 时出现“无法访问此站点”
- node.js - 在 express js 中完成上一个 api 执行后调用 api,并响应上一个 api
- javascript - TypeError:无法读取未定义的属性“编号”