代码之家  ›  专栏  ›  技术社区  ›  Adrian

在Django模板中只删除一个页面上的div

  •  0
  • Adrian  · 技术社区  · 4 年前

    我有一个包含15个单独页面的网站。在每个页面上,我都有一个名为header的div。我要通过JavaScript删除这个元素,如下所示:

    主页.html

    <script>
        const element = document.getElementById('header');
        element.remove();
    </script>
    

    问题是,在删除header元素之前,我可以看到它一秒钟。脚本被放置在页面的顶部。我也试着通过css这样做:

    .header {
        height: 0rem !important;
        visibility: hidden !important;
    }
    

    然而,在刷新页面时,我仍然看到元素消失了。

    我知道我可以在我的 base.html 文件,只需在homepage.html页面中排除它,但我需要手动将其包含在其他14个html文件中。

    提问 是否有其他/更好的方法来排除div,这样我在主页上根本看不到它?

    1 回复  |  直到 4 年前
        1
  •  2
  •   Aleph-null    4 年前

    Django的模板系统为你提供了极大的灵活性,一旦你理解了它是如何操作任何视图上的任何内容的 {%block%} 标签工作,特别是与扩展(子)模板相关。

    在您的情况下,您可以做的是将您的头部html包装在 base.html 像这样:

    {% block my_header %}
    <div class="header"></div>
    {% endblock header %}
    

    现在,在 主页.html 您只需添加以下内容(假设它扩展了base.html):

    {% extends "base.html" %}
    ...
    {% block my_header %}{% endblock header %}
    

    通过这段代码,你告诉Django用任何东西覆盖头块。我也推荐阅读 {{blocksuper}} .

        2
  •  0
  •   Marko M    4 年前

    使用css

    .header {
        display:none;
    }