如何更改Django admin头中的“Django administration”文本?
“自定义管理”文档中似乎没有涉及到这一点。
如何更改Django admin头中的“Django administration”文本?
“自定义管理”文档中似乎没有涉及到这一点。
当前回答
一个简单的方法是在项目文件夹中的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)
其他回答
因为我只在我的应用程序中使用管理界面,我把这个放在admin.py中:
admin.site.site_header = 'My administration'
从Django 2.0开始,你只需要在url.py中添加一行代码并更改名称。
# url.py
from django.contrib import admin
admin.site.site_header = "My Admin Central" # Add this
对于较旧版本的Django。(<1.11或更早的版本),您需要编辑admin/base_site.html
改变这一行
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
to
{% block title %}{{ title }} | {{ site_title|default:_('Your Site name Admin Central') }}{% endblock %}
你可以检查你的django版本
django-admin --version
你只需要覆盖admin/base_site.html模板(从django.contrib.admin.templates中复制模板并放入你自己的管理模板dir中)并替换branding块。
从Django 1.7开始,你不需要重写模板。现在,您可以在自定义AdminSite上实现site_header、site_title和index_title属性,以便轻松更改管理站点的页面标题和标题文本。创建一个AdminSite子类,并将你的实例绑定到URLconf中:
admin.py:
from django.contrib.admin import AdminSite
from django.utils.translation import ugettext_lazy
class MyAdminSite(AdminSite):
# Text to put at the end of each page's <title>.
site_title = ugettext_lazy('My site admin')
# Text to put in each page's <h1> (and above login form).
site_header = ugettext_lazy('My administration')
# Text to put at the top of the admin index page.
index_title = ugettext_lazy('Site administration')
admin_site = MyAdminSite()
urls . py:
from django.conf.urls import patterns, include
from myproject.admin import admin_site
urlpatterns = patterns('',
(r'^myadmin/', include(admin_site.urls)),
)
更新:正如oxfn所指出的,你可以直接在urls.py或admin.py中设置site_header,而不需要子类化AdminSite:
admin.site.site_header = 'My administration'
首先,您应该将templates/admin/base_site.html添加到项目中。这个文件可以安全地被覆盖,因为Django开发人员是为了定制您的管理站点而设计的这个文件。下面是在文件中放入内容的示例:
{% extends "admin/base.html" %}
{% load i18n %}
{% block title %}{{ title }} | {% trans 'Some Organisation' %}{% endblock %}
{% block branding %}
<style type="text/css">
#header
{
/* your style here */
}
</style>
<h1 id="site-name">{% trans 'Organisation Website' %}</h1>
{% endblock %}
{% block nav-global %}{% endblock %}
这是常见的做法。但我注意到,在这之后,我仍然在主管理索引页上留下了一个烦人的“网站管理”。这个字符串不在任何模板中,而是在管理视图中设置的。幸运的是,这很容易改变。假设你的语言设置为英语,在你的项目目录中运行以下命令:
$ mkdir locale
$ ./manage.py makemessages -l en
现在打开locale/en/LC_MESSAGES/django文件。Po并在标题信息后添加两行(本例的最后两行)
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-03 03:25+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Site administration"
msgstr "Main administration index"
在此之后,记得运行以下命令并重新加载项目的服务器:
$ ./manage.py compilemessages
来源:http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/