You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django能否在父模板base.html中判断content块是否为空并设置默认内容

Django模板继承实现父模板块默认内容方案

该需求完全可以实现,仅修改父模板base.html即可,无需改动任何子模板。

原生实现方案(适用于99%场景)

Django模板继承原生支持块默认值机制,不需要额外写判断逻辑,直接把默认内容写在父模板的content块内即可:

{# base.html 代码 #}
{% block content %}
<p>默认内容</p>
{% endblock content %}

生效规则

  • 子模板没有重写content块时,页面自动渲染父模板中定义的默认内容
  • 子模板重写了content块时,页面优先渲染子模板定义的内容

你之前设想的{% if block content is None %}语法是Django模板不支持的无效写法,也不需要写这类判断,原生的块默认机制已经完全匹配你的需求。

特殊场景兼容

如果你的项目中存在部分子模板虽然重写了content块,但是块内没有有效内容(仅为空行、空格),想要这类场景也触发默认内容显示,可以自定义一个模板过滤器校验块渲染结果:

  1. 先自定义空内容判断过滤器
# 你应用下的templatetags/custom_filters.py
from django import template
from django.utils.html import strip_tags
register = template.Library()

@register.filter
def is_empty(content):
    return not strip_tags(content).strip()
  1. 父模板代码调整为:
{% load custom_filters %}
{% filter is_empty as content_is_empty %}
{% block content %}{% endblock %}
{% endfilter %}

{% if content_is_empty %}
<p>默认内容</p>
{% else %}
{% block content %}{% endblock %}
{% endif %}

这个方案可以兼容子模板空块的场景,依然不需要修改任何子模板。

内容的提问来源于stack exchange,提问作者penk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:36:00