django - 将管理员的标题复制到所有模板

时间:2012-06-23 02:53:44

标签: django django-admin django-templates

所以我想要做的是在我自己的项目基础模板中添加django admin标头。我将base.html从admin模板复制到我的项目中。我可以以某种方式将{%block header%}标记放在base.html中,然后在我自己的项目基础模板中调用它吗?

{% block header %}
<!-- Header -->
<div id="header">
    <div id="branding">
    {% block branding %}{% endblock %}
    </div>

    {% if user.is_active and user.is_staff %}
    <div id="user-tools">

        {% trans 'Hi,' %}

        <strong>{% filter force_escape %}{% firstof user.first_name user.username %}{% endfilter %}</strong>.
        {% block userlinks %}
            {% url 'django-admindocs-docroot' as docsroot %}
            {% if docsroot %}
                <a href="{{ docsroot }}">{% trans 'Documentation' %}</a> /
            {% endif %}
            <a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a> /
            <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
        {% endblock %}
    </div>
    {% endif %}
    {% block nav-global %}{% endblock %}
</div>
<!-- END Header -->
{% endblock %}

2 个答案:

答案 0 :(得分:0)

'base.html'延伸的所有模板都会包含{% block header %}{% endblock %}内的内容,只要它们不覆盖块或其祖先(通过删除{% block header %}...{% endblock %}部分)。

如果某些模板未从base.html扩展,您可以将代码放入其公共基础,或使用inline taginclusion tags

之类的内容

此外,为了使代码能够对经过身份验证的用户正常工作,您需要确保上下文中存在user变量:通常它已经存在,或者如果您需要重新启用"django.contrib.auth.context_processors.auth"之前已将其删除,请检查the doc

答案 1 :(得分:0)

我最终从管理员'base.html'模板扩展了我的主模板并从那里开始。有点乱,但它有效