Bagaimana seseorang mengubah teks 'Administrasi Django' di header admin django?
Tampaknya tidak tercakup dalam dokumentasi "Menyesuaikan admin".
python
django
django-admin
samurailawngnome
sumber
sumber
Jawaban:
Pembaruan : Jika Anda menggunakan Django 1.7+, lihat jawabannya di bawah ini .
Jawaban asli dari 2011: Anda harus membuat admin sendiri
base_site.html
template untuk melakukan ini. Cara termudah adalah dengan membuat file:Ini harus merupakan salinan asli
base_site.html
, kecuali memasukkan judul khusus Anda:Agar ini berfungsi, Anda harus memiliki pengaturan yang benar untuk proyek Anda, yaitu di
settings.py
:/projectdir/templates/
ditambahkan keTEMPLATE_DIRS
.django.template.loaders.filesystem.Loader
ditambahkan keTEMPLATE_LOADERS
.Lihat dokumen untuk informasi lebih lanjut tentang
settings.py
.sumber
{% extends "admin/base.html" %}
masuk/<projectdir>/templates/admin/base_site.html
, dan cukup mendefinisikan kembali blok yang Anda butuhkan, yaitu{% block branding %}...{% endblock %}
.TEMPLATE_LOADER
pengaturan. CukupTEMPLATE_DIR
sudah cukup rasanyaPada Django 1.7 Anda tidak perlu mengganti template. Anda sekarang dapat menerapkan site_header ,,
site_title
danindex_title
atribut pada AdminSite khusus untuk dengan mudah mengubah judul halaman dan teks header situs admin. Buat subclass AdminSite dan kaitkan instance Anda ke URLconf Anda:admin.py:
urls.py:
Pembaruan : Seperti yang ditunjukkan oleh oxfn, Anda cukup mengatur
site_header
diurls.py
atauadmin.py
langsung tanpa subklasAdminSite
:sumber
admin_site
yang Anda buat. Sukaadmin_site.register(MyModel, ModelAdmin)
admin/base_site.html
templat, mis. Password_reset) maka jugaextra_context
harus digunakan dalam url: egurl(r'^password_reset/$', auth_views.password_reset, name='admin_password_reset', kwargs={'extra_context': {'site_header': "My administration"}})
admin.site.site_header
konfigurasi di manaapp*/admin.py
akan berlaku?Ada cara mudah untuk mengatur header situs admin - tetapkan ke instance admin saat
urls.py
ini seperti iniAtau seseorang dapat mengimplementasikan beberapa sihir pembangun tajuk dengan metode terpisah
Jadi, dalam kasus-kasus sederhana tidak perlu subkelas
AdminSite
sumber
admin.site.site_title = 'My site admin'
.urls.py
:from django.contrib import admin
AdminSite
dan menghabiskan beberapa saat mencoba membuatnya bekerja denganautodiscover()
tetapi akhirnya memikirkan solusi ini sendiri. Saya benar-benar mengesampingkan sayaadmin.py
, yang saya pikir lebih bersih karena disimpan bersama dengan semua logika terkait admin lainnyaDi dalam
urls.py
Anda dapat mengganti 3 variabel paling penting:Referensi: Dokumentasi Django tentang atribut-atribut ini .
sumber
Solusi lengkap sederhana di Django 1.8.3 berdasarkan jawaban dalam pertanyaan ini.
Di
settings.py
tambahkan:Di
urls.py
tambahkan:sumber
admin.py
. Jika Anda belum memilikinya, buat saja dan jangan lupa untuk menambahkanfrom django.contrib import admin
.ADMIN_SITE_HEADER
, satu-satunya hal yang penting di sini adalah garis masukurls.py
Cara termudah untuk melakukannya pastikan Anda memilikinya
dan kemudian tambahkan ini di bagian bawah
url.py
aplikasi utama Andasumber
Untuk Django 2.1.1 tambahkan baris berikut ke
urls.py
sumber
Seperti yang dapat Anda lihat di templat , teks dikirim melalui kerangka kerja pelokalan (perhatikan penggunaan
trans
tag templat). Anda dapat membuat perubahan pada file terjemahan untuk mengganti teks tanpa membuat salinan template Anda sendiri.mkdir locale
./manage.py makemessages
Edit
locale/en/LC_MESSAGES/django.po
, tambahkan baris ini:./manage.py compilemessages
Lihat https://docs.djangoproject.com/en/1.3/topics/i18n/localization/#message-files
sumber
admin.py:
sumber
from django.utils.translation import ugettext_lazy
Jangan lupa untuk menambahkan baris ini.Pertama-tama, Anda harus menambahkan template / admin / base_site.html ke proyek Anda. File ini dapat dengan aman ditimpa karena ini adalah file yang dimaksudkan para pengembang Django untuk tujuan yang tepat untuk menyesuaikan situs admin Anda sedikit. Berikut adalah contoh dari apa yang dimasukkan ke dalam file:
Ini adalah praktik umum. Tapi saya perhatikan setelah ini bahwa saya masih tersisa dengan "Administrasi Situs" yang mengganggu di halaman indeks admin utama. Dan string ini tidak ada di dalam salah satu template, melainkan di dalam tampilan admin. Untungnya itu cukup mudah untuk diubah. Dengan asumsi bahasa Anda disetel ke bahasa Inggris, jalankan perintah berikut dari direktori proyek Anda:
Sekarang buka file locale / en / LC_MESSAGES / django.po dan tambahkan dua baris setelah informasi header (dua baris terakhir dari contoh ini)
Setelah ini, ingatlah untuk menjalankan perintah berikut dan memuat kembali server proyek Anda:
sumber: http://overtag.dk/wordpress/2010/04/changing-the-django-admin-site-title/
sumber
Dari Django 2.0 Anda bisa menambahkan satu baris di
url.py
dan mengubah nama.Untuk versi Django yang lebih lama . (<1,11 dan sebelumnya) Anda perlu mengedit
admin/base_site.html
Ubah baris ini
untuk
Anda dapat memeriksa
django
versi Anda dengansumber
Buka saja file admin.py dan tambahkan baris ini di file:
admin.site.site_header = "My Administration"
sumber
Anda tidak perlu mengubah template apa pun untuk pekerjaan ini, Anda hanya perlu memperbarui
settings.py
proyek Anda. Pergi ke bawahsettings.py
dan tentukan ini.Dengan cara ini Anda akan dapat mengubah header dari admin Django. Selain itu, Anda dapat membaca lebih lanjut tentang penyesuaian dan pengaturan Admin Django pada tautan berikut.
Dokumentasi Admin Django
sumber
Anda dapat menggunakannya
AdminSite.site_header
untuk mengubah teks itu. Ini dokumennyasumber
Ada dua metode untuk melakukan ini:
1] Dengan meng-override
base_site.html
didjango/contrib/admin/templates/admin/base_site.html
: Mengikuti adalah isi daribase_site.html
:Edit site_title & site_header dalam cuplikan kode di atas. Metode ini berfungsi tetapi tidak dianjurkan karena merupakan perubahan statis.
2] Dengan menambahkan baris berikut dalam
urls.py
direktori proyek:Metode ini direkomendasikan satu karena kita dapat mengubah header situs, judul situs & indeks-judul tanpa mengedit
base_site.html
.sumber
Karena saya hanya menggunakan antarmuka admin di aplikasi saya, saya meletakkan ini di admin.py:
sumber
Anda tinggal mengganti
admin/base_site.html
template (salin template daridjango.contrib.admin.templates
dan masukkan dir template admin Anda sendiri) dan gantibranding
blokir.sumber