Django Admin-изменить заголовок "администрирование Django" текст

Как изменить текст "администрирование Django" в заголовке администратора django?

Он, похоже, не охвачен документацией "настройка администратора".

14 ответов


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

оригинальный ответ с 2011 года: Вам нужно создать свой собственный admin 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/templates/ ' добавлен в TEMPLATE_DIRS
  • убедитесь, что ' django.шаблон.погрузчики.файловая система.Загрузчик ' добавляется в TEMPLATE_LOADERS

см.http://docs.djangoproject.com/en/dev/ref/settings/ для получения дополнительной информации о settings.py


начиная с Django 1.7 вам не нужно переопределять шаблоны. Теперь вы можете реализовать site_header, site_title и index_title атрибуты пользовательского AdminSite для того, чтобы легко изменить заголовок страницы сайта администратора и текст заголовка. Создайте подкласс AdminSite и подключите экземпляр к вашему Url-конфигурации:

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

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


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

from django.contrib import admin

а затем просто добавьте их в нижней части url.py из вас основное приложение

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

как вы можете видеть в разделе шаблоны текст в рамках локализации (обратите внимание на использование 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


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


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

вам не нужно менять какой-либо шаблон для этой работы вам просто нужно обновить settings.py вашего проекта. Перейти к нижней части settings.py и определить это.

admin.site.site_header = 'My Site Admin'

таким образом, Вы сможете изменить заголовок администратора Django. Кроме того, вы можете узнать больше о настройке и настройках Django Admin по следующей ссылке.

Документация Администратора Django


можно использовать AdminSite.site_header изменить этот текст. Вот это docs


поскольку я использую только интерфейс администратора в своем приложении, я помещаю это в admin.py :

admin.site.site_header = 'My administration'

вы просто переопределить admin/base_site.html шаблон (скопируйте шаблон django.contrib.admin.templates и поместите в свой собственный шаблон администратора dir) и замените branding блок.


для 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'