Resmi Django belgelerinde , varsayılan yönetici şablonlarını geçersiz kılmak / genişletmek için ihtiyacım olan tüm bilgileri içeren tek bir cevap veya bir bölüm bulamadım , bu yüzden bu yanıtı eksiksiz bir kılavuz olarak yazıyorum ve yardımcı olacağını umuyorum gelecekte diğerleri için.
İçinde mysite/admin.py
, bir alt sınıf oluşturun AdminSite
:
from django.contrib.admin import AdminSite
class CustomAdminSite(AdminSite):
# set values for `site_header`, `site_title`, `index_title` etc.
site_header = 'Custom Admin Site'
...
# extend / override admin views, such as `index()`
def index(self, request, extra_context=None):
extra_context = extra_context or {}
# do whatever you want to do and save the values in `extra_context`
extra_context['world'] = 'Earth'
return super(CustomAdminSite, self).index(request, extra_context)
custom_admin_site = CustomAdminSite()
Emin ithal etmek olun custom_admin_site
içinde admin.py
uygulamalarınızın ve (eğer isterseniz) özelleştirilmiş yönetici sitesinde görüntülemeyi üzerinde sizin modellerini kayıt olun.
İse mysite/apps.py
, bir alt sınıf oluşturmak AdminConfig
ve set default_site
için admin.CustomAdminSite
önceki adımdaki:
from django.contrib.admin.apps import AdminConfig
class CustomAdminConfig(AdminConfig):
default_site = 'admin.CustomAdminSite'
Olarak mysite/settings.py
değiştirin django.admin.site
içinde INSTALLED_APPS
olan apps.CustomAdminConfig
(önceki adımdan özel yönetici uygulaması yapılandırma).
İçinde mysite/urls.py
, admin.site.urls
yönetici URL'sini şu şekilde değiştirin :custom_admin_site.urls
from .admin import custom_admin_site
urlpatterns = [
...
path('admin/', custom_admin_site.urls),
# for Django 1.x versions: url(r'^admin/', include(custom_admin_site.urls)),
...
]
Belgelerdetemplates
belirtildiği gibi varsayılan Django yönetici şablonları dizin yapısını koruyarak dizininizde değiştirmek istediğiniz şablonu oluşturun . Örneğin, değişiklik yapıyorsanız , dosyayı oluşturun .admin/index.html
templates/admin/index.html
Mevcut tüm şablonlar bu şekilde değiştirilebilir ve isimleri ve yapıları Django'nun kaynak kodunda bulunabilir .
Artık şablonu sıfırdan yazarak geçersiz kılabilir veya genişletebilir ve ardından belirli blokları geçersiz kılabilir / genişletebilirsiniz.
Örneğin, her şeyi olduğu gibi tutmak, ancak content
engellemeyi geçersiz kılmak istiyorsanız (indeks sayfasında kaydettiğiniz uygulamaları ve modellerini listeler), aşağıdakileri ekleyin templates/admin/index.html
:
{% extends 'admin/index.html' %}
{% block content %}
<h1>
Hello, {{ world }}!
</h1>
{% endblock %}
Bir bloğun orijinal içeriğini korumak için {{ block.super }}
, orijinal içeriğin görüntülenmesini istediğiniz yere ekleyin :
{% extends 'admin/index.html' %}
{% block content %}
<h1>
Hello, {{ world }}!
</h1>
{{ block.super }}
{% endblock %}
Ayrıca extrastyle
ve extrahead
bloklarını değiştirerek özel stiller ve komut dosyaları ekleyebilirsiniz .