【问题标题】:django - copy header from admin to all templatesdjango - 将标头从管理员复制到所有模板
【发布时间】:2012-06-25 08:31:54
【问题描述】:

所以我想做的是在我自己的项目基础模板中添加 django 管理头。我将 base.html 从管理模板复制到我的项目中。我可以以某种方式将 {% 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 %}

【问题讨论】:

    标签: django django-admin django-templates


    【解决方案1】:

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

    如果有没有从base.html 扩展的模板,您可以将代码放入它们的公共库中,或者使用inline taginclusion tags 之类的东西

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-12
        • 2018-06-01
        • 1970-01-01
        • 2011-04-16
        • 2011-04-30
        • 2016-03-01
        • 2013-12-06
        • 2011-09-28
        • 2020-05-06
        相关资源
        最近更新 更多