这是我的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 %}
然后在后续页面中,您可以扩展任一模板。你需要多大的灵活性总是取决于你自己。