如何在Django模板中根据子模板是否重写title块动态修改<title>标签
解决方案
你可以通过Django模板中块的is_overridden属性来判断title块是否被子模板重写,从而动态生成符合需求的标题:
调整基础模板(main.html)
<title> {% block title %}{% endblock %}{% if block.title.is_overridden %} | Application{% else %}Application{% endif %} </title>
子模板使用方式
- 需要自定义标题时(如dashboard.html):
{% extends 'main.html' %} {% block title %}Dashboard{% endblock %}
此时页面标题会渲染为 Dashboard | Application
- 不需要自定义标题时:
{% extends 'main.html' %}
此时页面标题会直接渲染为 Application
可选的直观写法
如果你觉得上面的写法不够清晰,也可以拆分条件判断:
<title> {% if block.title.is_overridden %} {% block title %}{% endblock %} | Application {% else %} Application {% endif %} </title>
这种方式利用了Django模板系统中block对象的is_overridden属性,它会返回布尔值表示当前块是否被子模板重写,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者Ali Zain
相关产品推荐
相关产品推荐

