Django Admin - изменить текст заголовка 'Администрация Django' - PullRequest
172 голосов
/ 09 февраля 2011

Как можно изменить текст «Администрация Django» в заголовке администратора django?

Кажется, он не описан в документации «Настройка администратора».

Ответы [ 14 ]

327 голосов
/ 27 июля 2014

Начиная с Django 1.7 вам не нужно переопределять шаблоны. Теперь вы можете реализовать site_header , site_title и index_title атрибутов на пользовательском AdminSite , чтобы легко сменить администратора заголовок страницы сайта и текст заголовка. Создайте подкласс 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'
174 голосов
/ 24 сентября 2014

Существует простой способ установить заголовок сайта администратора - назначить его текущему экземпляру администратора в urls.py следующим образом

admin.site.site_header = 'My admin'

Или можно реализовать магию построения заголовков в отдельном методе

admin.site.site_header = get_admin_header()

Таким образом, в простых случаях нет необходимости создавать подкласс AdminSite

132 голосов
/ 09 февраля 2011

Обновление : Если вы используете Django 1.7+, см. Ответ ниже .


Оригинальный ответ с 2011 года: Для этого вам нужно создать свой собственный шаблон администратора base_site.html. Самый простой способ - создать файл:

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

Это должна быть копия оригинала 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.

67 голосов
/ 27 марта 2016

В 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 по этим атрибутам .

59 голосов
/ 30 июля 2015

Простое полное решение в 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
12 голосов
/ 30 марта 2017

Самый простой способ сделать это - убедиться, что у вас есть

from django.contrib import admin

, а затем просто добавить их внизу url.py вашего основного приложения

admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin" 
9 голосов
/ 16 сентября 2018

Для 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'
9 голосов
/ 15 февраля 2012

Как видно из шаблонов , текст доставляется через каркас локализации (обратите внимание на использование тега trans template).Вы можете внести изменения в файлы перевода, чтобы переопределить текст, не создавая собственную копию шаблонов.

  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

4 голосов
/ 13 марта 2017

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')
4 голосов
/ 15 июля 2013

Прежде всего, вы должны добавить 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

source: http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...