Como alguém muda o texto 'Administração do Django' no cabeçalho do django admin?
Parece não estar coberto na documentação "Personalizando o administrador".
Como alguém muda o texto 'Administração do Django' no cabeçalho do django admin?
Parece não estar coberto na documentação "Personalizando o administrador".
Respostas:
Atualização : Se você estiver usando o Django 1.7+, veja a resposta abaixo .
Resposta original de 2011:
você precisa criar seu próprio base_site.html
modelo de administrador para fazer isso. A maneira mais fácil é criar o arquivo:
/<projectdir>/templates/admin/base_site.html
Esta deve ser uma cópia do originalbase_site.html
, exceto colocando seu título personalizado:
{% block branding %}
<h1 id="site-name">{% trans 'my cool admin console' %}</h1>
{% endblock %}
Para que isso funcione, você precisa ter as configurações corretas para o seu projeto, nomeadamente em settings.py
:
/projectdir/templates/
foi adicionado ao TEMPLATE_DIRS
.django.template.loaders.filesystem.Loader
foi adicionado ao TEMPLATE_LOADERS
.Consulte os documentos para obter mais informações sobresettings.py
.
{% extends "admin/base.html" %}
em /<projectdir>/templates/admin/base_site.html
e simplesmente redefinir o bloco (s) que você precisa, ou seja {% block branding %}...{% endblock %}
.
TEMPLATE_LOADER
configuração. Assim TEMPLATE_DIR
é o suficiente, parece
No Django 1.7, você não precisa substituir os modelos. Agora você pode implementar site_header , site_title
e index_title
atributos em um AdminSite personalizado para alterar facilmente o título da página do site de administração e o texto do cabeçalho. Crie uma subclasse AdminSite e conecte sua instância ao seu 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)),
)
Atualização : Como indicado pelo oxfn, você pode simplesmente definir o site_header
no seu urls.py
ou admin.py
diretamente, sem subclassificar AdminSite
:
admin.site.site_header = 'My administration'
admin_site
que você criou. Comoadmin_site.register(MyModel, ModelAdmin)
admin/base_site.html
modelo, por exemplo, password_reset), também extra_context
deve ser usado nos URLs: egurl(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
admin.site.site_header
configuração em que app*/admin.py
entrará em vigor?
Existe uma maneira fácil de definir o cabeçalho do site de administração - atribua-o à instância atual do administrador urls.py
desta maneira
admin.site.site_header = 'My admin'
Ou pode-se implementar alguma mágica de construção de cabeçalho em método separado
admin.site.site_header = get_admin_header()
Assim, em casos simples, não há necessidade de subclassificar AdminSite
admin.site.site_title = 'My site admin'
.
urls.py
:from django.contrib import admin
AdminSite
e passei um tempo tentando fazê-lo funcionar, autodiscover()
mas finalmente pensei nessa solução por conta própria. Na verdade, tenho a minha substituição na admin.py
, que eu acho que é mais limpo, uma vez que é mantido junto com todos os outros admin-relacionado lógica
Em urls.py
você pode substituir as 3 variáveis mais importantes:
from django.contrib import admin
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"
Referência: documentação do Django sobre esses atributos .
Uma solução completa e simples no Django 1.8.3 com base nas respostas nesta pergunta.
Em settings.py
adição:
ADMIN_SITE_HEADER = "My shiny new administration"
Em urls.py
adição:
from django.conf import settings
admin.site.site_header = settings.ADMIN_SITE_HEADER
admin.py
. Se você ainda não o possui, basta criá-lo e não se esqueça de adicionar from django.contrib import admin
.
ADMIN_SITE_HEADER
urls.py
A maneira mais fácil de fazer isso é garantir que você tenha
from django.contrib import admin
e então basta adicioná-los na parte inferior do url.py
aplicativo principal
admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin"
Para o Django 2.1.1, adicione as seguintes linhas em 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'
Como você pode ver nos modelos , o texto é entregue através da estrutura de localização (observe o uso da trans
marca do modelo). Você pode fazer alterações nos arquivos de tradução para substituir o texto sem fazer sua própria cópia dos modelos.
mkdir locale
./manage.py makemessages
Edite locale/en/LC_MESSAGES/django.po
, adicionando estas linhas:
msgid "Django site admin"
msgstr "MySite site admin"
msgid "Django administration"
msgstr "MySite administration"
./manage.py compilemessages
Consulte https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files
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.utils.translation import ugettext_lazy
Não esqueça de adicionar esta linha.
Primeiro de tudo, você deve adicionar templates / admin / base_site.html ao seu projeto. Este arquivo pode ser sobrescrito com segurança, pois é um arquivo que os desenvolvedores do Django pretendem com o objetivo exato de personalizar um pouco o site de administração. Aqui está um exemplo do que colocar no arquivo:
{% 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 %}
Esta é uma prática comum. Mas notei depois disso que ainda me restava uma “Administração de Site” irritante na página principal do índice de administração. E essa string não estava dentro de nenhum dos modelos, mas sim dentro da visualização do administrador. Felizmente, é muito fácil mudar. Supondo que seu idioma esteja definido como inglês, execute os seguintes comandos no diretório do projeto:
$ mkdir locale
$ ./manage.py makemessages -l en
Agora abra o arquivo locale / pt / LC_MESSAGES / django.po e adicione duas linhas após as informações do cabeçalho (as últimas duas linhas deste exemplo)
"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"
Depois disso, lembre-se de executar o seguinte comando e recarregar o servidor do seu projeto:
$ ./manage.py compilemessages
fonte: http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/
No Django 2.0, você pode simplesmente adicionar uma única linha no url.py
e alterar o nome.
# url.py
from django.contrib import admin
admin.site.site_header = "My Admin Central" # Add this
Para versões mais antigas do Django. (<1.11 e versões anteriores), você precisa editaradmin/base_site.html
Mude esta linha
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
para
{% block title %}{{ title }} | {{ site_title|default:_('Your Site name Admin Central') }}{% endblock %}
Você pode verificar sua django
versão
django-admin --version
Basta ir ao arquivo admin.py e adicionar esta linha no arquivo:
admin.site.site_header = "My Administration"
você não precisa alterar nenhum modelo para este trabalho, basta atualizar o settings.py
do seu projeto. Vá para o final do settings.py
e defina isso.
admin.site.site_header = 'My Site Admin'
Dessa forma, você poderá alterar o cabeçalho do administrador do Django. Além disso, você pode ler mais sobre a personalização e as configurações do Django Admin no seguinte link.
Você pode usar AdminSite.site_header
para alterar esse texto. Aqui estão os documentos
Existem dois métodos para fazer isso:
1] Por substituindo base_site.html
em django/contrib/admin/templates/admin/base_site.html
: Segue-se o conteúdo de base_site.html
:
{% extends "admin/base.html" %}
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}
{% block nav-global %}{% endblock %}
Edite o site_title & site_header no snippet de código acima. Este método funciona, mas não é recomendável, pois é uma alteração estática.
2] Adicionando as seguintes linhas no urls.py
diretório do projeto:
admin.site.site_header = "AppHeader"
admin.site.site_title = "AppTitle"
admin.site.index_title = "IndexTitle"
Este método é recomendado, pois podemos alterar o cabeçalho do site, o título do site e o título do índice sem edição base_site.html
.
Você acabou de substituir o admin/base_site.html
modelo (copie o modelo django.contrib.admin.templates
e coloque em seu próprio diretório de modelo de administração) e substitua o branding
bloco.