如何更改Django admin头中的“Django administration”文本?

“自定义管理”文档中似乎没有涉及到这一点。


当前回答

admin.py:

from django.contrib.admin import AdminSite

AdminSite.site_title = ugettext_lazy('My Admin')

AdminSite.site_header = ugettext_lazy('My Administration')

AdminSite.index_title = ugettext_lazy('DATA BASE ADMINISTRATION')

其他回答

使用format_html允许html被呈现,否则它将只是纯文本。

在你的主url .py文件中添加以下内容(url .py在settings.py存在的目录中):

from django.contrib import admin
from django.utils.html import format_html

site_header = 'Your html snippet'
admin.site.site_header = format_html(site_header)

在urls.py中,你可以覆盖3个最重要的变量:

from django.contrib import admin

admin.site.site_header = 'My project'                    # default: "Django Administration"
admin.site.index_title = 'Features area'                 # default: "Site administration"
admin.site.site_title = 'HTML title from adminsitration' # default: "Django site admin"

参考:关于这些属性的Django文档。

更新:如果你使用的是Django 1.7+,请参阅下面的答案。


2011年的原始答案: 为此,您需要创建自己的管理base_site.html模板。最简单的方法是创建文件:

/<projectdir>/templates/admin/base_site.html

这应该是原始base_site.html的副本,除了放入您的自定义标题:

{% block branding %}
<h1 id="site-name">{% trans 'my cool admin console' %}</h1>
{% endblock %}

为此,你需要为你的项目设置正确的设置,即在settings.py中:

确保/projectdir/templates/被添加到TEMPLATE_DIRS中。 确保django.template.loaders. filessystem .loader被添加到TEMPLATE_LOADERS中。

有关settings.py的更多信息,请参阅文档。

一个简单的方法是在项目文件夹中的urls.py文件中包含以下代码。

 in urls.py add 

  admin.site.site_header  =  "Site Header here"  
  admin.site.site_title  =  "Side title"
  admin.site.index_title  =  "Index title"

例如:

from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from django.conf.urls.static import static
from django.conf import settings


admin.site.site_header  =  "Hadramawt Kitchen"  
admin.site.site_title  =  "Hadramawt Kitchen"
admin.site.index_title  =  "Hadramawt Admin"

urlpatterns = [
  path('admin/', admin.site.urls),
  path('', include('food_products.urls' )),
  path('categories', include('categories.urls' )),
  path('news', include('news.urls')),
  path('weeklyOffer', include('weekly_offer.urls'))
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

有两种方法:

1]在django/contrib/admin/templates/admin/base_site.html中覆盖base_site.html: 下面是base_site.html的内容:

{% extends "admin/base.html" %}

{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}

编辑上面代码片段中的site_title和site_header。这种方法是有效的,但不推荐,因为它是一个静态的变化。

2]在项目目录的urls.py中添加以下行:

admin.site.site_header = "AppHeader"
admin.site.site_title = "AppTitle"
admin.site.index_title = "IndexTitle"
admin.site.site_url = "Url for view site button"

推荐使用这种方法,因为我们可以在不编辑base_site.html的情况下更改site-header, site-title和index-title。