如何覆盖Django管理页面?

时间:2014-10-22 07:42:27

标签: django django-templates django-admin

我覆盖了管理模板,我有类似的东西:

{% for app in app_list %}
    <li>
        <a href="#">
            <img src="{{ MEDIA_URL }}images/list.png"/>
            <span>{{ app.name }}</span>
        </a>
        <ul class="drawer" style="display: none;">
            {% for model in app.models %}
                <li>
                    <a href="{{ model.admin_url }}">
                        <span>{{ model.name }}</span>
                    </a>
                </li>
            {% endfor %}
        </ul>
    </li>
{% endfor %}

但它只在索引页面上显示菜单。如何在每个管理页面上获取app_list?

2 个答案:

答案 0 :(得分:0)

我认为您唯一的解决方案是修改base_site.html,因为每个页面都从{% extends "admin/base_site.html" %}延伸并包含您想要的内容!您必须创建一个管理员文件夹并将修改后的base_site.html放入其中。您必须确保django正确加载模板目录,请参阅此question (django-override-admin-template)以获得更多说明。

答案 1 :(得分:0)

我认为您可以将代码移入     {%block nav-global%} {%endblock%} 例如,在模板文件中,如下所示:

{% block nav-global %}
    {% for app in app_list %}
        <li>
            <a href="#">
                <img src="{{ MEDIA_URL }}images/list.png"/>
                <span>{{ app.name }}</span>
            </a>
            <ul class="drawer" style="display: none;">
                {% for model in app.models %}
                    <li>
                        <a href="{{ model.admin_url }}">
                           <span>{{ model.name }}</span>
                        </a>
                   </li>
                {% endfor %}
           </ul>
       </li>
    {% endfor %}
{% endblock %}
{% block content %}
......
{% endblock %}