Django yönetici başlığındaki 'Django yönetimi' metni nasıl değiştirilir?
"Yöneticiyi özelleştirme" belgelerinde yer almıyor gibi görünüyor.
Django yönetici başlığındaki 'Django yönetimi' metni nasıl değiştirilir?
"Yöneticiyi özelleştirme" belgelerinde yer almıyor gibi görünüyor.
Yanıtlar:
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
.
{% extends "admin/base.html" %}
içinde /<projectdir>/templates/admin/base_site.html
ve sadece blok (ler) ihtiyacınız yani yeniden tanımlamak {% block branding %}...{% endblock %}
.
TEMPLATE_LOADER
ayarı eklemeseniz bile yukarıda çalışır . Sadece TEMPLATE_DIR
yeterli görünüyor
Django 1.7'den itibaren şablonları geçersiz kılmanıza gerek yoktur. Artık uygulayabileceği site_header , site_title
ve 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_header
sizin urls.py
veya admin.py
doğrudan alt sınıf olmadan ayarlayabilirsiniz AdminSite
:
admin.site.site_header = 'My administration'
admin_site
oluşturduğunuz yeni kayıtlara kaydetmeniz gerekir . Beğenadmin_site.register(MyModel, ModelAdmin)
admin/base_site.html
şablona bağlı olarak , örn. Password_reset) extra_context
url(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
admin.site.site_header
yapılandırma app*/admin.py
geçerli olur?
Set yönetici sitesi başlığına kolay bir yolu yoktur - güncel yönetici örneğine atayın urls.py
bö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
admin.site.site_title = 'My site admin'
.
urls.py
:from django.contrib import admin
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
İçinde urls.py
en ö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 .
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
admin.py
. Henüz sahip değilseniz, oluşturun ve eklemeyi unutmayın from django.contrib import admin
.
ADMIN_SITE_HEADER
, burada önemli olan tek şey şu: Hattınurls.py
Bunu yapmanın en kolay yolu,
from django.contrib import admin
ve sonra url.py
bunları ana uygulamanızın altına ekleyin
admin.site.site_title = "Your App Title"
admin.site.site_header = "Your App Admin"
Ş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.
mkdir locale
./manage.py makemessages
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"
./manage.py compilemessages
Bkz. Https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files
Sadece admin.py dosyasına gidin ve bu satırı dosyaya ekleyin:
admin.site.site_header = "My Administration"
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
Bu satırı eklemeyi unutmayın.
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/
Gönderen Django 2.0 Eğer sadece tek bir satır ekleyebilir url.py
ve 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 %}
django
Sürümünüzü şu şekilde kontrol edebilirsiniz :
django-admin --version
bu iş için herhangi bir şablonu değiştirmeniz gerekmez, sadece settings.py
projenizi güncellemeniz gerekir . Bunun altına gidin settings.py
ve 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.
Bu AdminSite.site_header
metni değiştirmek için kullanabilirsiniz . İşte dokümanlar
Bunu yapmak için iki yöntem vardır:
1] geçersiz kılma ile base_site.html
de 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.py
Proje 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
.
Sadece admin/base_site.html
şablonu geçersiz kılarsınız (şablonu django.contrib.admin.templates
kendi yönetici şablon dizininden kopyalayıp koyarsınız) ve branding
bloğu değiştirirsiniz .
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 = ""