Jak zmienić tekst „Administracja Django” w nagłówku administratora django?
Wydaje się, że nie jest to uwzględnione w dokumentacji „Dostosowywanie administratora”.
python
django
django-admin
samurailawngnome
źródło
źródło
Odpowiedzi:
Aktualizacja : Jeśli używasz Django 1.7+, zobacz odpowiedź poniżej .
Oryginalna odpowiedź z 2011 r. Aby to zrobić, musisz utworzyć własny
base_site.html
szablon administratora . Najłatwiejszym sposobem jest utworzenie pliku:Powinna to być kopia oryginału
base_site.html
, z wyjątkiem podania własnego tytułu:Aby to zadziałało, musisz mieć poprawne ustawienia dla swojego projektu, a mianowicie
settings.py
:/projectdir/templates/
został dodany doTEMPLATE_DIRS
.django.template.loaders.filesystem.Loader
został dodany doTEMPLATE_LOADERS
.Zobacz dokumentację, aby uzyskać więcej informacji na temat
settings.py
.źródło
{% extends "admin/base.html" %}
się/<projectdir>/templates/admin/base_site.html
i po prostu przedefiniować blok (ów) trzeba, tzn{% block branding %}...{% endblock %}
.TEMPLATE_LOADER
ustawienia. Po prostuTEMPLATE_DIR
jest na tyle wydajePocząwszy od Django 1.7, nie musisz zastępować szablonów. Teraz można wdrożyć site_header ,
site_title
orazindex_title
atrybutów niestandardowych AdminSite aby łatwo zmienić tytuł strony panelu administracyjnego i tekst nagłówka. Utwórz podklasę AdminSite i podłącz instancję do swojego URLconf:admin.py:
urls.py:
Aktualizacja : Jak wskazał oxfn, możesz po prostu ustawić
site_header
w swoimurls.py
lubadmin.py
bezpośrednio bez podklasyAdminSite
:źródło
admin_site
utworzonym. Jakadmin_site.register(MyModel, ModelAdmin)
admin/base_site.html
szablonu, np. Reset_hasła ), to równieżextra_context
powinien zostać użyty w adresach URL: np.url(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
admin.site.site_header
konfiguracja, która zadziałaapp*/admin.py
?Istnieje prosty sposób na ustawienie nagłówka strony administratora - przypisz go do bieżącej instancji administratora w
urls.py
ten sposóbAlbo można zaimplementować magię budowania nagłówka osobną metodą
Dlatego w prostych przypadkach nie ma potrzeby dokonywania podklasy
AdminSite
źródło
admin.site.site_title = 'My site admin'
.urls.py
:from django.contrib import admin
AdminSite
i spędziłem trochę czasu próbując sprawić, by to działało,autodiscover()
ale w końcu sam pomyślałem o tym rozwiązaniu. W rzeczywistości mam moje zastąpienieadmin.py
, które moim zdaniem jest czystsze, ponieważ jest przechowywane wraz z całą pozostałą logiką związaną z administracjąW
urls.py
możesz zastąpić 3 najważniejsze zmienne:Odniesienie: Dokumentacja Django dotycząca tych atrybutów .
źródło
Proste kompletne rozwiązanie w Django 1.8.3 oparte na odpowiedziach na to pytanie.
W
settings.py
dodatku:W
urls.py
dodatku:źródło
admin.py
. Jeśli jeszcze go nie masz, po prostu utwórz go i nie zapomnij dodaćfrom django.contrib import admin
.ADMIN_SITE_HEADER
, jedyne, co się tutaj liczy, to wiersz wurls.py
Najłatwiej to zrobić, upewnij się, że masz
a następnie dodaj je na dole
url.py
głównej aplikacjiźródło
W przypadku Django 2.1.1 dodaj następujące wiersze do
urls.py
źródło
Jak widać w szablonach , tekst jest dostarczany za pośrednictwem struktury lokalizacji (zwróć uwagę na użycie
trans
znacznika szablonu). Możesz dokonać zmian w plikach tłumaczeń, aby zastąpić tekst bez tworzenia własnej kopii szablonów.mkdir locale
./manage.py makemessages
Edytuj
locale/en/LC_MESSAGES/django.po
, dodając następujące linie:./manage.py compilemessages
Zobacz https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files
źródło
admin.py:
źródło
from django.utils.translation import ugettext_lazy
Nie zapomnij dodać tej linii.Przede wszystkim należy dodać szablony / admin / base_site.html do swojego projektu. Ten plik można bezpiecznie zastąpić, ponieważ jest to plik, który deweloperzy Django zamieścili właśnie w tym celu, aby nieco dostosować stronę administratora. Oto przykład tego, co należy umieścić w pliku:
To jest powszechna praktyka. Zauważyłem jednak, że nadal mam irytujące „Administrowanie witryną” na głównej stronie indeksu administratora. I ten ciąg nie był w żadnym z szablonów, ale był ustawiony w widoku administratora. Na szczęście łatwo to zmienić. Zakładając, że Twój język jest ustawiony na angielski, uruchom następujące polecenia z katalogu projektu:
Teraz otwórz plik locale / pl / LC_MESSAGES / django.po i dodaj dwa wiersze po informacji nagłówka (ostatnie dwa wiersze tego przykładu)
Następnie pamiętaj, aby uruchomić następujące polecenie i ponownie załadować serwer projektu:
źródło: http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/
źródło
Od Django 2.0 możesz po prostu dodać pojedynczą linię do
url.py
i zmienić nazwę.Dla starszych wersji Django. (<1.11 i wcześniejsze) musisz edytować
admin/base_site.html
Zmień tę linię
do
Możesz sprawdzić swoją
django
wersję przezźródło
Wystarczy przejść do pliku admin.py i dodać ten wiersz do pliku:
admin.site.site_header = "My Administration"
źródło
nie musisz zmieniać żadnego szablonu dla tej pracy, wystarczy zaktualizować
settings.py
swój projekt. Idź na dółsettings.py
i zdefiniuj to.W ten sposób będziesz mógł zmienić nagłówek administratora Django. Ponadto możesz przeczytać więcej o dostosowywaniu i ustawieniach administratora Django pod poniższym linkiem.
Dokumentacja administracyjna Django
źródło
Możesz użyć,
AdminSite.site_header
aby zmienić ten tekst. Oto dokumentyźródło
Można to zrobić na dwa sposoby:
1] Przesłaniając
base_site.html
wdjango/contrib/admin/templates/admin/base_site.html
: Poniżej znajduje się treśćbase_site.html
:Edytuj site_title i site_header w powyższym fragmencie kodu. Ta metoda działa, ale nie jest zalecana, ponieważ jest to zmiana statyczna.
2] Dodając następujące wiersze w
urls.py
katalogu projektu:Ta metoda jest zalecana, ponieważ możemy zmienić nagłówek strony, tytuł strony i tytuł indeksu bez edycji
base_site.html
.źródło
Ponieważ używam tylko interfejsu administratora w swojej aplikacji, umieszczam to w admin.py:
źródło
Po prostu przesłonisz
admin/base_site.html
szablon (skopiujesz szablondjango.contrib.admin.templates
i umieścisz w swoim własnym katalogu administratora) i zastąpiszbranding
blok.źródło