Django Admin - 更改标题'Django administration'文本

时间:2011-02-08 21:10:16

标签: python django django-admin

如何更改django管理标题中的“Django管理”文本?

“自定义管理员”文档似乎没有涵盖它。

19 个答案:

答案 0 :(得分:322)

从Django 1.7开始,您不需要覆盖模板。您现在可以在自定义site_header上实施site_titleindex_titleAdminSite属性,以便轻松更改管理网站的网页标题和标题文字。创建一个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.pyadmin.py设置site_header,而无需继承AdminSite:< / p>

admin.site.site_header = 'My administration'

答案 1 :(得分:172)

有一种简单的方法来设置管理站点标题 - 将其分配给urls.py中的当前管理员实例

admin.site.site_header = 'My admin'

或者可以在单独的方法中实现一些标题构建魔法

admin.site.site_header = get_admin_header()

因此,在简单的情况下,不需要继承AdminSite

答案 2 :(得分:131)

更新:如果您使用的是Django 1.7+,请参阅answer below


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

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

这应该是original 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.filesystem.Loader添加到TEMPLATE_LOADERS

See docs for more information on settings.py

答案 3 :(得分:65)

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

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 documentation on these attributes

答案 4 :(得分:59)

Django 1.8.3中基于此问题的答案的简单完整解决方案。

settings.py添加:

ADMIN_SITE_HEADER = "My shiny new administration"

urls.py添加:

from django.conf import settings
admin.site.site_header = settings.ADMIN_SITE_HEADER

答案 5 :(得分:12)

最简单的方法 确保你有

Imported_Date

然后只需在主应用程序的from django.contrib import admin 底部添加这些

url.py

答案 6 :(得分:9)

正如您在templates中看到的那样,文本是通过本地化框架提供的(请注意使用trans模板标记)。您可以更改翻译文件以覆盖文本,而无需制作自己的模板副本。

  1. mkdir locale
  2. ./manage.py makemessages
  3. 修改locale/en/LC_MESSAGES/django.po,添加以下行:

    msgid "Django site admin"
    msgstr "MySite site admin"
    
    msgid "Django administration"
    msgstr "MySite administration"
    
  4. ./manage.py compilemessages

  5. 请参阅https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files

答案 7 :(得分:8)

对于Django 2.1.1,将以下行添加到urls.py

from django.contrib import admin

# Admin Site Config
admin.sites.AdminSite.site_header = 'My site admin header'
admin.sites.AdminSite.site_title = 'My site admin title'
admin.sites.AdminSite.index_title = 'My site admin index'

答案 8 :(得分:7)

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 %}

{% block title %}{{ title }} | {{ site_title|default:_('Your Site name Admin Central') }}{% endblock %}

您可以通过

检查您的django版本
django-admin --version

答案 9 :(得分:7)

只需转到admin.py文件并将此行添加到文件中:

admin.site.site_header = "My Administration"

答案 10 :(得分:5)

有两种方法可以做到这一点:

1]通过覆盖base_site.html中的django/contrib/admin/templates/admin/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的情况下更改站点标题,站点标题和索引标题。

答案 11 :(得分:4)

首先,您应该将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/

答案 12 :(得分:4)

希望不要太晚,最简单的方法是编辑 admin.py 文件。

admin.site.site_header = 'your_header'
admin.site.site_title = 'site_title'
admin.site.index_title = 'index_title'

答案 13 :(得分:4)

<强> admin.py:

CharField

答案 14 :(得分:2)

您无需为此工作更改任何模板,只需更新项目的settings.py即可。转到settings.py的底部并定义此内容。

admin.site.site_header = 'My Site Admin'

通过这种方式,您可以更改Django管理员的标题。此外,您可以在以下链接上阅读有关Django Admin自定义和设置的更多信息。

refresh interval

答案 15 :(得分:2)

您可以在主urls.py

中使用以下几行

您可以在要显示的引号中添加文字

要替换文本Django admin,请使用admin.site.site_header = ""

要替换文本“网站管理”,请使用admin.site.site_title = ""

要替换站点名称,可以使用admin.site.index_title = ""

要替换查看网站按钮的网址,您可以使用admin.site.site_url = ""

答案 16 :(得分:1)

由于我只在我的应用程序中使用管理界面,因此我将其放在admin.py中:

admin.site.site_header = 'My administration'

答案 17 :(得分:0)

您只需覆盖admin/base_site.html模板(从django.contrib.admin.templates复制模板并输入您自己的管理模板目录)并替换branding块。

答案 18 :(得分:0)

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

在您的主 urls.py 文件中添加以下内容(urls.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)