在基本模板中添加类的 DRY 方法<body>?



这是我的base.html:的一般结构

<html>
    <head>
    </head>
    <body class="noscroll">
        <nav class="navbar navbar-static-top navbar-dark bg-inverse">
        </nav>
        {% block content %}
        {% endblock content %}
    </body>
</html>

在某些页面上,我想要noscroll类,它本质上是overflow-y: hidden;,但我也有需要滚动的页面。我可以将导航条移动到它自己的片段中并插入,但这样的方法似乎不令人满意。或者我可以制作一个单独的base_noscroll.html,但这可能会导致不一致,所以我必须嵌套两个模板,这两个模板再次变得不令人满意。

只需添加一个具有默认内容的可重写块:

<body class="{% block body_class %}noscroll{% endblock %}">

noscroll类存在,或者您可以在扩展base.html的模板中覆盖它。Django模板块几乎可以去任何地方;它们不必包装整个HTML标签。

如果你发现自己经常覆盖这个块,你总是可以添加另一个扩展base.html并进行覆盖的模板,然后扩展它:

# noscroll.html
{% extends 'base.html' %}
{% block body_class %}{# empty to override #}{% endblock %}

然后在后续页面中,您可以扩展任一模板。你需要多大的灵活性总是取决于你自己。

相关内容

最新更新