我想用管理员中的自定义字符串动态替换“站点管理”。我已经为其他目的覆盖了“ base.html”,但是现在我需要将变量传递给此模板以替换{{ title }}为
{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)
从这个问题中我已经看到,可以通过在模型admin中重写changelist_view并添加一个变量来将其传递给变更列表模板extra_context,但是如何将额外的上下文传递给admin的“主”页面呢?
该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__)
Run Code Online (Sandbox Code Playgroud)
您也可以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()
Run Code Online (Sandbox Code Playgroud)
如果要title在所有“管理”页面中使用,最好使用上下文处理器或自定义一些模板标记。
| 归档时间: |
|
| 查看次数: |
2428 次 |
| 最近记录: |