4

管理者の「サイト管理」をカスタム文字列に動的に置き換えたい。他の目的で「base.html」をオーバーライドしましたが、このテンプレートに変数を渡して置き換える必要があります{{ title }}

{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}

この質問から、モデル管理者にをオーバーライドchangelist_viewして追加することで変数を変更リストテンプレートextra_contextに渡すことができることがわかりましたが、管理者の「メイン」ページに追加のコンテキストを渡すにはどうすればよいですか?

4

2 に答える 2

6

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すべての管理ページに含める場合は、コンテキスト プロセッサを使用するか、可能であればテンプレート タグをカスタマイズすることをお勧めします。

于 2012-06-27T12:16:29.933 に答える
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 %}
于 2012-06-27T11:30:35.497 に答える