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? [复制]