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

在Django中如何隐藏base.html模板的特定代码段使其不在首页显示

解决方案

问题根源

你当前代码的核心问题有两点:

  • 父模板base.html中定义的面包屑块名为header_parent,但普通子页面中声明的空块名为header,二者名称不匹配,无法覆盖父模板的对应内容
  • 如果你将header_parent块定义在了base.html的content块外部,那么在子页面的content块内定义任何块,都无法作用到外部的header_parent块

方案一:子模板覆盖父块(灵活可控)

无需修改base.html和普通子页面,仅修改home.html,直接重写header_parent块为空即可隐藏面包屑:

{% extends "base.html" %}
{% load static %}
{% block header_parent %}{% endblock %}
{% block content %}
<p>Home</p>
{% endblock content %}

后续如果有其他页面也需要隐藏面包屑,只要在对应子页面加上{% block header_parent %}{% endblock %}即可。

方案二:父模板加路径判断(无需改子页面)

如果只有首页需要隐藏面包屑,可直接在base.html中给面包屑代码加路径判断,不用修改任何子页面:

{% if request.resolver_match.url_name != 'home' %}
{% block header_parent %}
<!-- ***** Breadcumb Area Start ***** -->
<div class="mosh-breadcumb-area" style="background-image: url({% static 'img/core-img/breadcumb.png' %})">
    <div class="container h-100">
        <div class="row h-100 align-items-center">
            <div class="col-12">
                <div class="bradcumbContent">
                    <h2>{{page_title}}</h2>
                    <nav aria-label="breadcrumb">
                        <ol class="breadcrumb">
                            <li class="breadcrumb-item"><a href="{% url 'home' %}">Home</a></li>
                            <li class="breadcrumb-item active" aria-current="page">{{page_title}}</li>
                        </ol>
                    </nav>
                </div>
            </div>
        </div>
    </div>
</div>    
<!-- ***** Breadcumb Area End ***** -->
{% endblock %}
{% endif %}

注意:使用该方案需要确保settings.py的TEMPLATES配置项中,context_processors列表已添加django.template.context_processors.request,否则模板无法获取request变量。

内容的提问来源于stack exchange,提问作者project.py

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:09:02