Django 在模板中有条件地隐藏侧边栏/导航

1 投票
1 回答
3916 浏览
提问于 2025-04-17 23:26

我在想用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 %}

撰写回答