Django Admin - 'Django yönetimi' metnini değiştir


Yanıtlar:


140

Güncelleme : Django 1.7+ kullanıyorsanız, aşağıdaki cevaba bakınız .


2011'den orijinal yanıt: Bunu yapmak için kendi yönetici base_site.htmlşablonunuzu oluşturmanız gerekir . En kolay yol dosyayı oluşturmaktır:

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

Bu , özel başlığınızı koymak dışında orijinalinbase_site.html bir kopyası olmalıdır :

{% block branding %}
<h1 id="site-name">{% trans 'my cool admin console' %}</h1>
{% endblock %}

Bunun çalışması için, projeniz için doğru ayarlara sahip olmanız gerekir, yani settings.py:

  • /projectdir/templates/İçine eklendiğinden emin olun TEMPLATE_DIRS.
  • django.template.loaders.filesystem.Loaderİçine eklendiğinden emin olun TEMPLATE_LOADERS.

Hakkında daha fazla bilgi için dokümanlara bakınsettings.py .


77
Ayrıca yapabilirsiniz unutmayın {% extends "admin/base.html" %}içinde /<projectdir>/templates/admin/base_site.htmlve sadece blok (ler) ihtiyacınız yani yeniden tanımlamak {% block branding %}...{% endblock %}.
Arnaud

12
Oldukça eski olsa bile, uygulamanızı bu şablonu 'django.contrib.admin' den önce, INSTALLED_APPS
DRC

1
Django 1.6 python 3.3'te, yukarı TEMPLATE_LOADERayarı eklemeseniz bile yukarıda çalışır . Sadece TEMPLATE_DIRyeterli görünüyor
lukik

12
Bu 1.7'den beri eskimiş. Reto Aebersold'un cevabına bakınız.
Andrew

5
Bunu url.py admin.site.site_header = 'Yönetimim''de deneyin admin.site.index_title = (' Yöneticim ') admin.site.site_title = (' Yönetici sayfam ')
Ashish Gupta

355

Django 1.7'den itibaren şablonları geçersiz kılmanıza gerek yoktur. Artık uygulayabileceği site_header , site_titleve index_titleözel üzerindeki özelliklerini AdminSite kolayca yönetici sitenin sayfa başlığı ve başlık metni değiştirmek için. Bir AdminSite alt sınıfı oluşturun ve örneğinizi URL bağlantınıza bağlayın:

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

Güncelleme : oxfn tarafından işaret edildiği gibi, sadece site_headersizin urls.pyveya admin.pydoğrudan alt sınıf olmadan ayarlayabilirsiniz AdminSite:

admin.site.site_header = 'My administration'

11
Bu, / myadmin / öğesine erişmeye çalıştığımda "Hiçbir şeyi düzenleme izniniz yok" hata iletisini atar. Görünüşe göre .autodiscover'ı aramalıyım, ancak Django 1.7'nin otomatik olarak çağrılması gerekiyordu. Bir ipucu?
David Arcos

3
@DavidArcos Modellerinizi, admin_siteoluşturduğunuz yeni kayıtlara kaydetmeniz gerekir . Beğenadmin_site.register(MyModel, ModelAdmin)
Andrey Fedoseev

1
Ayrıca django.auth.views içindeki bir başlık da özelleştirilecekse ( admin/base_site.htmlşablona bağlı olarak , örn. Password_reset) extra_contexturl(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
URL'lerde

Bu şekilde bilinmesi gereken bir şey, yalnızca standart yönetici sayfalarıyla çalışacağıdır, başka bir uygulamada kendi yönetici sayfalarınızı eklerseniz (yönetici taban şablonunu uzatın), her zaman varsayılan "Django Yönetimi" ni alırlar. Başlık.
Kedare

1
@oxfn Birden fazla uygulamam varsa, hangi admin.site.site_headeryapılandırma app*/admin.pygeçerli olur?
nalzok

197

Set yönetici sitesi başlığına kolay bir yolu yoktur - güncel yönetici örneğine atayın urls.pyböyle

admin.site.site_header = 'My admin'

Ya da başlık oluşturma sihrini ayrı bir yöntemle uygulayabilir

admin.site.site_header = get_admin_header()

Bu nedenle, basit durumlarda alt sınıfa gerek yoktur AdminSite


1
İlk yol işe yaradı. Şu anda sorunun ne olduğunu gerçekten bilmiyorum. teşekkür ederim
Alex Jolig

4
Eğer başlık değiştirirken, muhtemelen de birlikte gerçekleştirilebilir site başlığı, değiştirmek istersiniz: admin.site.site_title = 'My site admin'.
mcastle

2
İşte eklemek için bir ithalat dizesi urls.py:from django.contrib import admin
serg

4
Bunu önce bulsaydım ... Belgelere kulak asmak, alt sınıflara ayırdım ve AdminSiteçalışmak için biraz zaman harcadım autodiscover()ama sonunda bu çözümü kendi başıma düşündüm. Aslında benim geçersiz kılma var admin.py, diğer tüm yönetici ile ilgili mantık ile birlikte tutulduğundan beri daha temiz olduğunu düşünüyorum
user193130

1
değiştirebileceğiniz tüm özelliklerin listesini kontrol edin docs.djangoproject.com/tr/1.11/ref/contrib/admin/…
Sergio Morstabilini

96

İçinde urls.pyen önemli 3 değişkeni geçersiz kılabilirsiniz:

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"

Referans: Bu özelliklerle ilgili Django belgeleri .


65

Bu soruya verilen cevaplara dayanan Django 1.8.3'te basit ve eksiksiz bir çözüm.

Ek olarak settings.py:

ADMIN_SITE_HEADER = "My shiny new administration"

Ek olarak urls.py:

from django.conf import settings
admin.site.site_header = settings.ADMIN_SITE_HEADER

7
Bunu yapmak için urls.py kullanmaktan daha iyi bir yer var mı?
Venkat Kotra

2
@VenkatKotra Evet, içeri admin.py. Henüz sahip değilseniz, oluşturun ve eklemeyi unutmayın from django.contrib import admin.
user193130

3
Ayarları içe aktarmanın önerilen yolu - "django.conf içe aktarma ayarlarından" şeklindedir (bkz. Docs.djangoproject.com/en/1.9/topics/settings/… )
yoniLavi

1
Django'nun çağrıldığı hiçbir ayar yok ADMIN_SITE_HEADER, burada önemli olan tek şey şu: Hattınurls.py
Flimm

16

Bunu yapmanın en kolay yolu,

from django.contrib import admin

ve sonra url.pybunları ana uygulamanızın altına ekleyin

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

15

Django 2.1.1 için aşağıdaki satırları ekleyin: 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'

10

Şablonlarda görebileceğiniz gibi, metin yerelleştirme çerçevesi üzerinden iletilir ( transşablon etiketinin kullanımına dikkat edin ). Şablonların kendi kopyasını oluşturmadan metni geçersiz kılmak için çeviri dosyalarında değişiklik yapabilirsiniz.

  1. mkdir locale

  2. ./manage.py makemessages

  3. Düzenleme locale/en/LC_MESSAGES/django.po, aşağıdaki satırları ekleyerek:

    msgid "Django site admin"
    msgstr "MySite site admin"
    
    msgid "Django administration"
    msgstr "MySite administration"
  4. ./manage.py compilemessages

Bkz. Https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files


1
Bu korkunç bir çözüm. Çeviri dizelerini geçersiz kılmak sadece korkunç bir fikirdir.

6

Sadece admin.py dosyasına gidin ve bu satırı dosyaya ekleyin:

admin.site.site_header = "My Administration"


5

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

1
from django.utils.translation import ugettext_lazy Bu satırı eklemeyi unutmayın.
rkdevs

5

Her şeyden önce, projenize şablon / admin / base_site.html eklemelisiniz. Django geliştiricilerinin tam olarak yönetici sitenizi biraz özelleştirmek amacıyla tasarladığı bir dosya olduğundan, bu dosyanın üzerine güvenle yazılabilir. İşte dosyaya ne koyacağınıza dair bir örnek:

{% 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 %}

Bu yaygın bir uygulamadır. Ancak bundan sonra ana yönetici dizin sayfasında can sıkıcı bir "Site Yönetimi" ile kaldığımı fark ettim. Ve bu dize şablonların hiçbirinde değil, yönetici görünümünün içinde ayarlanmıştı. Neyse ki değiştirmek oldukça kolay. Dilinizin İngilizce olarak ayarlandığını varsayarsak, proje dizininizden aşağıdaki komutları çalıştırın:

$ mkdir locale
$ ./manage.py makemessages -l en

Şimdi locale / en / LC_MESSAGES / django.po dosyasını açın ve başlık bilgisinden sonra iki satır ekleyin (bu örneğin son iki satırı)

"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"

Bundan sonra, aşağıdaki komutu çalıştırmayı ve projenizin sunucusunu yeniden yüklemeyi unutmayın:

$ ./manage.py compilemessages

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


Dış sitelere bağlantı vermek kötü olarak değerlendirilebilir, çünkü bağlantı kötüleşebilir. Cevabı buradan siteden yeniden yazmanız önerilir.

Sitenin dışına çıkmak istemiyorsanız cevabı yeniden yazdım.
Soroosh

5

Gönderen Django 2.0 Eğer sadece tek bir satır ekleyebilir url.pyve adını değiştirin.

# url.py

from django.contrib import admin 
admin.site.site_header = "My Admin Central" # Add this

Django'nun eski sürümleri için . (<1.11 ve öncesi) düzenlemeniz gerekiradmin/base_site.html

Bu satırı değiştir

{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}

için

{% block title %}{{ title }} | {{ site_title|default:_('Your Site name Admin Central') }}{% endblock %}

djangoSürümünüzü şu şekilde kontrol edebilirsiniz :

django-admin --version

3

bu iş için herhangi bir şablonu değiştirmeniz gerekmez, sadece settings.pyprojenizi güncellemeniz gerekir . Bunun altına gidin settings.pyve bunu tanımlayın.

admin.site.site_header = 'My Site Admin'

Bu şekilde Django yöneticisinin başlığını değiştirebilirsiniz. Ayrıca, aşağıdaki bağlantıda Django Yönetici özelleştirmesi ve ayarları hakkında daha fazla bilgi edinebilirsiniz.

Django Yönetici Belgeleri



3

Bunu yapmak için iki yöntem vardır:

1] geçersiz kılma ile base_site.htmlde django/contrib/admin/templates/admin/base_site.html: Aşağıdakilerden içeriği 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 %}

Yukarıdaki kod snippet'inde site_title & site_header öğelerini düzenleyin. Bu yöntem çalışır, ancak statik bir değişiklik olduğu için önerilmez.

2] urls.pyProje dizinine aşağıdaki satırları ekleyerek :

admin.site.site_header = "AppHeader"
admin.site.site_title = "AppTitle"
admin.site.index_title = "IndexTitle"

Site üstbilgisini, site başlığını ve dizin başlığını düzenlemeden değiştirebildiğimiz için bu yöntem önerilir base_site.html.


2

Benim app sadece admin arayüzü kullandığım için, bu admin.py koymak:

admin.site.site_header = 'My administration'

1

Sadece admin/base_site.htmlşablonu geçersiz kılarsınız (şablonu django.contrib.admin.templateskendi yönetici şablon dizininden kopyalayıp koyarsınız) ve brandingbloğu değiştirirsiniz .


0

Aşağıdaki satırları ana makinenizde kullanabilirsiniz urls.py

görüntülenecek tırnak içine metin ekleyebilirsiniz

Metin Django yönetici değiştirmek için admin.site.site_header = ""

Site Yönetimi metnini değiştirmek için admin.site.site_title = ""

Site adını değiştirmek için kullanabilirsiniz admin.site.index_title = ""

Veiw sit düğmesinin URL'sini değiştirmek için admin.site.site_url = ""

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.