Django的pipe理员 – 更改标题“Djangopipe理”文本
如何更改Djangopipe理标题中的“Djangopipe理”文本?
它似乎没有涵盖在“定制pipe理”文档。
您需要创build自己的pipe理员base_site.html模板来执行此操作。 最简单的方法是创build文件:
/<projectdir>/templates/admin/base_site.html
这应该是一个https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/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中
有关settings.py的更多信息,请参阅http://docs.djangoproject.com/en/dev/ref/settings/
从Django 1.7开始,你不需要重写模板。 您现在可以在自定义AdminSite上实现site_header , site_title
和index_title
属性,以便轻松更改pipe理网站的页面标题和标题文本。 创build一个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
直接设置admin.py
而无需AdminSite
:
admin.site.site_header = 'My administration'
有一个简单的方法来设置pipe理网站标题 – 分配给urls.py
当前的pipe理实例像这样
admin.site.site_header = 'My admin'
或者可以用单独的方法实现一些标题构build魔法
admin.site.site_header = get_admin_header()
因此,在简单的情况下,不需要子类AdminSite
Django 1.8.3中一个简单的完整解决scheme,基于这个问题的答案。
在settings.py
添加:
ADMIN_SITE_HEADER = "My shiny new administration"
在urls.py
添加:
from django.conf import settings admin.site.site_header = settings.ADMIN_SITE_HEADER
在urls.py中,您可以覆盖3个最重要的variables:
admin.site.site_header = _('My project') admin.site.index_title = _('Features area') admin.site.site_title = _('HTML title from adminsitration')
正如您在模板中看到的那样,文本通过本地化框架提供(请注意使用trans
模板标签)。 您可以对翻译文件进行更改以覆盖文本,而无需制作自己的模板副本。
-
mkdir locale
-
./manage.py makemessages
-
编辑
locale/en/LC_MESSAGES/django.po
,添加这些行:msgid "Django site admin" msgstr "MySite site admin" msgid "Django administration" msgstr "MySite administration"
-
./manage.py compilemessages
请参阅https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files
首先,你想添加templates / admin / base_site.html到你的项目。 这个文件可以被安全地覆盖,因为它是一个django开发者准备用来定制你的pipe理站点的文件。 以下是放入文件的示例:
{% 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 %}
这是常见的做法。 但之后我注意到,在主pipe理索引页面上,我仍然留下了一个烦人的“网站pipe理”。 而这个string不在模板内,而是在pipe理视图中设置。 幸运的是,这很容易改变。 假设您的语言设置为英语,请从项目目录运行以下命令:
$ 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/
您不需要更改此工作的任何模板,只需更新项目的settings.py
。 转到settings.py
的底部并定义它。
admin.site.site_header = 'My Site Admin'
通过这种方式,您将能够更改Djangopipe理员的标题。 此外,您可以在以下链接阅读更多关于Django Admin的自定义和设置。
Djangopipe理文档
最简单的方法确保你有
from django.contrib import admin
然后将这些添加到您主应用程序的url.py
的底部
admin.site.site_title = "Your App Title" admin.site.site_header = "Your App Admin"
由于我只在我的应用程序中使用pipe理界面,所以我把它放在admin.py中:
admin.site.site_header = 'My 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')
您只需重写admin/base_site.html
模板(从django.contrib.admin.templates
复制模板,并放入您自己的pipe理模板目录)并replacebranding
模块。
您可以使用AdminSite.site_header
更改该文本。 这里是文档