回答
更新:如果您使用的是Django 1.7+,請參閱answer below。從2011年
原來的答覆: 您需要創建自己的管理員base_site.html模板來做到這一點。最簡單的方法是創建該文件:
/<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 /模板/' 添加到TEMPLATE_DIRS
- 確保「django.template.loaders.filesystem.Loader」加入到TEMPLATE_LOADERS
見http://docs.djangoproject.com/en/dev/ref/settings/的更多信息,settings.py
您只需重寫admin/base_site.html
模板(從django.contrib.admin.templates
複製模板並放入您自己的管理模板目錄)並替換branding
塊。
正如你可以在templates看到,該文本通過本地化框架交付(請注意使用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
這一個非常hacky的解決方案:S – panchicore 2012-08-01 16:05:18
@panchicore這是一個恭維,對吧? ;-) – nemesisfixx 2013-01-16 07:56:48
首先,你要添加模板/管理/ 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
現在打開該文件的語言環境/ 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 protected]>\n"
"Language-Team: LANGUAGE <[email protected]>\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/
從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你可以簡單地設置site_header
你的urls.py
或admin.py
直接與從子類AdminSite
:
admin.site.site_header = 'My administration'
有設置管理網站頁眉一個簡單的方法 - 將其分配給當前的管理實例在urls.py
這樣
admin.site.site_header = 'My admin'
或者一個可以實現在不同的一些頭建設法寶方法
admin.site.site_header = get_admin_header()
因此,在簡單的情況下,有沒有必要繼承AdminSite
基於這個問題的答案,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
在urls.py可以覆蓋3個最重要的變量:
admin.site.site_header = 'My project'
admin.site.index_title = 'Features area'
admin.site.site_title = 'HTML title from adminsitration'
由於我只使用管理界面在我的應用程序,我把這個在admin.py:
admin.site.site_header = 'My administration'
您無需更改此項工作的任何模板,只需更新項目的settings.py
即可。轉到settings.py
的底部並對其進行定義。
admin.site.site_header = 'My Site Admin'
通過這種方式,您將能夠更改Django管理員的標頭。此外,您可以在以下鏈接閱讀有關Django Admin自定義和設置的更多信息。
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')
做的最簡單的方法 請確保您有
from django.contrib import admin
,然後只需添加這些在的url.py
底部你的主要應用程序
admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin"
您可以使用AdminSite.site_header
來更改該文本。這裏是docs
- 1. Django的管理工具:改變頭「Django的管理」
- 2. 如何管理Django管理
- 3. Django的:管理:改變字段的小部件管理
- 4. 更改django管理標題
- 5. 修改Django管理模板
- 6. Django管理raw_id_fields說明沒有改變
- 7. Django管理會議:改變默認值
- 8. Django管理changelist_view
- 9. Django管理ManyToManyField
- 10. 在Django管理
- 11. Django管理get_FOO_display
- 12. Django管理
- 13. 在Django管理
- 14. 在Django管理
- 15. 在Django管理
- 16. 在Django管理
- 17. Django的 - 在管理
- 18. Django的DoesNotExist /管理/
- 19. 管理django中的列表管理員
- 20. Django的管理:CharField爲文本區域
- 21. Django管理:Django Admin中的變量/常量可以更改
- 22. Django管理項目分佈和管理
- 23. Django管理TemplateSyntaxError/TemplateDoesNotExist在/管理/
- 24. Django管理員DoesNotExist在/管理員/
- 25. Django管理list_display文本字段
- 26. Django管理,在StackedInline
- 27. MultiValueDictKeyError在Django管理
- 28. Django管理界面
- 29. Django管理排序
- 30. Django管理翻譯
另外請注意,您可以`{%擴展爲 「admin/base.html文件」 %}`在`/ /模板/管理/ base_site.html`,並簡單地重新定義塊(一個或多個),你需要,即`{%block branding%} ... {%endblock%}`。 –
Arnaud
2011-02-09 01:33:47
即使相當古老,我想補充一點,你必須把你的應用程序放在'django.contrib.admin'之前定義這個模板的地方,INSTALLED_APPS – DRC 2013-07-27 07:08:20
@Arnaud,這是最乾淨的答案 – maazza 2013-08-26 13:16:35