django - 将标头从管理员复制到所有模板

Posted

技术标签:

【中文标题】django - 将标头从管理员复制到所有模板【英文标题】:django - copy header from admin to all templates 【发布时间】: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 %

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于django - 将标头从管理员复制到所有模板的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据库的数据从一个 django 应用程序复制到另一个应用程序

Django——有没有办法从模板中引用/获取当前页面 URL? [复制]

无法更改 Django 管理模板

我将如何在 Django 模板标签中使用模板上下文变量的值? [复制]

将文件从脚本目录复制到所有用户的桌面

Django:如何在模板中使用设置? [复制]