Django:设置了admin.site.site_header,但对于自己的页面不可见

时间:2018-11-28 12:25:18

标签: django django-admin

我按照文档中的说明设置了admin.site.site_header = 'Fooo'

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.AdminSite.site_header

这对于所有普通的管理页面都非常有用。

我还有一个附加的(自定义)页面,我希望它看起来像管理页面。

我在模板中使用{% extends 'admin/base_site.html' %}

在此页面上,未显示site_header'Fooo'。默认的django字符串可见。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

在用户Alasdair的帮助下,我找到了以下解决方案:

由于我有多个需要该上下文变量的视图,因此我编写了一个Mixin:

function getNode(node) {
  if (node.title === 'randomNode_3') {
    return true;
  } else if (!node.children && !node.id) {
    return false;
  } else {
    if (node.children) {
      for (var i = 0; i < node.children.length; i++) {
        getNode(node.children[i])
      }
    }
  }
}
getNode(data[0])

PageMixin的用法:

from django.contrib import admin

class PageMixin(object):
    def get_context_data(self, **kwargs):
        context = super(PageMixin, self).get_context_data(**kwargs)
        context['site_header'] = admin.site.site_header
        return context