Django 在模板中有条件地隐藏侧边栏/导航
我在想用Django来有条件地隐藏一些div(网页中的一个部分)最好的方法是什么。我觉得在模板语言里可能有个优雅的解决方案我还没发现。我可以写一个列表,然后用request.path来判断,但如果能从视图里得到一个指示,或者更好的是,使用更好的模板方法,那就更好了。有什么建议吗?
base.html
<body>
{% include "header.html" %}
<div id="wrapper">
{% ifnotequal request.path '/accounts/login/' %}
{% include 'leftpane.html' %}
{% endifnotequal %}
<div id="main">
{% block content %}{% endblock %}
</div>
</div>
{% include "footer.html" %}
</body>
1 个回答
1
你可以使用模板继承。
在你需要的模板中添加一个块,用来包含你的leftpane.html,比如:
在base.html中:
<body>
{% include "header.html" %}
<div id="wrapper">{% block accounts %}{% endblock %}
<div id="main">
{% block content %}{% endblock %}
</div>
</div>
{% include "footer.html" %}
</body>
然后在其他需要左侧面板的模板中(比如可能不是首页的模板),在空的base.html块里面添加左侧面板,比如:
在accounts.html中:
{% extends 'base.html %}
{% block accounts %}{% include 'leftpane.html' %}{% endblock %}