每个应用程序页面的默认标题为:verbose_name + "administration"我怎么能改变它?
verbose_name + "administration"
ktecyv1j1#
不幸的是,目前Django并没有提供一个干净的方法来覆盖这个头文本,因为它是硬编码在django.contrib.admin.sites.AdminSite.app_index方法中的。但是,如果您确实需要这样做,您可以覆盖这个方法,并用您的文本替换默认标题。如果您还没有使用AdminSite,则需要使用自己的自定义AdminSite。所以,你需要修改你的urls.py指向你的自定义类,而不是默认的django管理员url,你还需要在你的类中注册你的模型,而不是默认的站点。类MyAdminSite(admin.管理站点):
django.contrib.admin.sites.AdminSite.app_index
urls.py
def app_index(self, request, app_label, extra_context=None): response: TemplateResponse = super().app_index(request, app_label, extra_context) response.context_data['title'] = 'Your header goes here; return response
一定要检查原始的方法代码,因为它在不同的Django版本中可能会有所不同。上面提供的代码适用于Django 3。2.3.
bvjxkvbb2#
你可以考虑在你的admin.py中使用:
admin.py
admin.site.site_title = "My DEBUG Panel"
或者类似地,对于类似于admin.py或settings.py中的报头:
settings.py
ADMIN_SITE_HEADER = "My DEBUG Panel"
3okqufwl3#
正如Pavel所指出的,覆盖标题文本很复杂,因为它是硬编码的。但是,使用javascript很容易解决这个问题。首先,将以下内容添加到templates/admin/base_site.html中:
templates/admin/base_site.html
{% block content_title %}{% if title %}<h1 id='adminTitle'>{{ title }}</h1>{% endif %}{% endblock %}
请注意H1标记中的id='adminTitle'。然后,在</h1>和{% endif %}之间添加javascript,结果:
id='adminTitle'
</h1>
{% endif %}
{% block content_title %}{% if title %}<h1 id='adminTitle'>{{ title }}</h1><script> if (adminTitle.innerHTML == 'MyApp administration') adminTitle.innerHTML = 'My New Title' </script>{% endif %}{% endblock %}
显然,你可以编写更复杂的javascript来替换标题的部分内容。
3条答案
按热度按时间ktecyv1j1#
不幸的是,目前Django并没有提供一个干净的方法来覆盖这个头文本,因为它是硬编码在
django.contrib.admin.sites.AdminSite.app_index
方法中的。但是,如果您确实需要这样做,您可以覆盖这个方法,并用您的文本替换默认标题。
如果您还没有使用AdminSite,则需要使用自己的自定义AdminSite。所以,你需要修改你的
urls.py
指向你的自定义类,而不是默认的django管理员url,你还需要在你的类中注册你的模型,而不是默认的站点。类MyAdminSite(admin.管理站点):
一定要检查原始的方法代码,因为它在不同的Django版本中可能会有所不同。上面提供的代码适用于Django 3。2.3.
bvjxkvbb2#
你可以考虑在你的
admin.py
中使用:或者类似地,对于类似于
admin.py
或settings.py
中的报头:3okqufwl3#
正如Pavel所指出的,覆盖标题文本很复杂,因为它是硬编码的。
但是,使用javascript很容易解决这个问题。
首先,将以下内容添加到
templates/admin/base_site.html
中:请注意H1标记中的
id='adminTitle'
。然后,在
</h1>
和{% endif %}
之间添加javascript,结果:显然,你可以编写更复杂的javascript来替换标题的部分内容。