2011-02-08 82 views

回答

117

更新:如果您使用的是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

+71

另外請注意,您可以`{%擴展爲 「admin/base.html文件」 %}`在`/ /模板/管理/ base_site.html`,並簡單地重新定義塊(一個或多個),你需要,即`{%block branding%} ... {%endblock%}`。 – Arnaud 2011-02-09 01:33:47

+12

即使相當古老,我想補充一點,你必須把你的應用程序放在'django.contrib.admin'之前定義這個模板的地方,INSTALLED_APPS – DRC 2013-07-27 07:08:20

+0

@Arnaud,這是最乾淨的答案 – maazza 2013-08-26 13:16:35

0

您只需重寫admin/base_site.html模板(從django.contrib.admin.templates複製模板並放入您自己的管理模板目錄)並替換branding塊。

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

參見https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files

+8

這一個非常hacky的解決方案:S – panchicore 2012-08-01 16:05:18

+0

@panchicore這是一個恭維,對吧? ;-) – nemesisfixx 2013-01-16 07:56:48

3

首先,你要添加模板/管理/ 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/

266

從Django 1.7開始,您不需要重寫模板。您現在可以在自定義AdminSite上實施site_headersite_titleindex_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.pyadmin.py直接與從子類AdminSite

admin.site.site_header = 'My administration' 
142

有設置管理網站頁眉一個簡單的方法 - 將其分配給當前的管理實例在urls.py這樣

admin.site.site_header = 'My admin' 

或者一個可以實現在不同的一些頭建設法寶方法

admin.site.site_header = get_admin_header() 

因此,在簡單的情況下,有沒有必要繼承AdminSite

51

基於這個問題的答案,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 
23

在urls.py可以覆蓋3個最重要的變量:

admin.site.site_header = 'My project' 
admin.site.index_title = 'Features area' 
admin.site.site_title = 'HTML title from adminsitration' 
1

由於我只使用管理界面在我的應用程序,我把這個在admin.py:

admin.site.site_header = 'My administration' 
2

您無需更改此項工作的任何模板,只需更新項目的settings.py即可。轉到settings.py的底部並對其進行定義。

admin.site.site_header = 'My Site Admin' 

通過這種方式,您將能夠更改Django管理員的標頭。此外,您可以在以下鏈接閱讀有關Django Admin自定義和設置的更多信息。

Django Admin Documentation

1

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') 
6

做的最簡單的方法 請確保您有

from django.contrib import admin 

,然後只需添加這些在的url.py底部你的主要應用程序

admin.site.site_title = "Your App Title" 
admin.site.site_header = "Your App Admin" 
1

您可以使用AdminSite.site_header來更改該文本。這裏是docs