我想通过管理员中的自定义字符串动态替换“网站管理”。 我已经覆盖了“base.html”用于其他目的,但现在我需要将一个变量传递给此模板以替换
中的{{ title }}
{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
我从this question看到,通过覆盖changelist_view
并在模型管理员中添加extra_context
,可以将变量传递到更改列表模板,但是如何通过管理员“主要”页面的额外上下文“?
答案 0 :(得分:5)
index()
视图位于django.contrib.admin.site.AdminSite
类内,并支持extra_context
,您可以覆盖它,例如:
def index(self, *args, **kwargs):
return admin.site.__class__.index(self, extra_context={'title':'customized title'}, *args, **kwargs)
admin.site.index = index.__get__(admin.site, admin.site.__class__)
您也可以直接覆盖AdminSite
并使用customized_site
代替admin.site
:
class CustomizedAdminSite(AdminSite):
def index(self, *args, **kwargs):
return super(CustomizedAdminSite, self).index(extra_context={...}, *args, **kwargs)
customized_site = CustomizedAdminSite()
如果您想在所有管理页面中使用title
,最好使用context processor或自定义一些模板标记。
答案 1 :(得分:1)
您覆盖“admin / base_site.html”模板:
{% extends "admin/base.html" %}
{% load i18n %}
{% block title %} {{ title }} | {% trans 'YOUR TITLE HERE' %} {% endblock %}
{% block branding %}
<h1 id="site-name">{% trans 'STUFF HERE PERHAPS' %} </h1>
{% endblock %}
{% block nav-global %}
{% endblock %}