这是我的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
,但这可能导致不一致,所以我必须嵌套两个模板,这将再次令人不满意。
答案 0 :(得分:6)
只需使用默认内容添加可覆盖的块:
<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 %}
然后在后续页面中,您可以扩展任一模板。您需要多大的灵活性始终取决于您。