मुझे आधिकारिक Django डॉक्स में एक भी उत्तर या एक अनुभाग नहीं मिला, जिसमें डिफ़ॉल्ट व्यवस्थापक टेम्प्लेट को ओवरराइड / विस्तारित करने के लिए आवश्यक सभी जानकारी थी, इसलिए मैं इस उत्तर को एक पूर्ण मार्गदर्शिका के रूप में लिख रहा हूं, उम्मीद है कि यह उपयोगी होगा। भविष्य में दूसरों के लिए।
में mysite/admin.py
, एक उप-वर्ग बनाएँ 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()
custom_admin_site
में आयात करने के लिए सुनिश्चित करेंadmin.py
अपने ऐप्स और अपने अनुकूलित व्यवस्थापक साइट (यदि आप चाहते हैं) पर उन्हें प्रदर्शित करने के लिए उस पर अपने मॉडल पंजीकृत करें।
में mysite/apps.py
, की एक उप-वर्ग बनाने AdminConfig
और सेट default_site
करने के लिए admin.CustomAdminSite
पिछले चरण से:
from django.contrib.admin.apps import AdminConfig
class CustomAdminConfig(AdminConfig):
default_site = 'admin.CustomAdminSite'
में mysite/settings.py
, की जगह django.admin.site
में INSTALLED_APPS
साथ apps.CustomAdminConfig
(पिछले चरण से अपने कस्टम व्यवस्थापक ऐप्स config)।
में mysite/urls.py
, admin.site.urls
व्यवस्थापक URL से प्रतिस्थापित करें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)),
...
]
डॉक्सtemplates
में निर्दिष्ट टेम्पलेट Django व्यवस्थापक टेम्पलेट निर्देशिका संरचना को बनाए रखते हुए आप अपनी निर्देशिका में संशोधित करना चाहते हैं, बनाएं । उदाहरण के लिए, यदि आप संशोधित कर रहे थे, तो फ़ाइल बनाएँ ।admin/index.html
templates/admin/index.html
मौजूदा सभी टेम्प्लेट इस तरह से संशोधित किए जा सकते हैं, और उनके नाम और संरचनाएं Django के स्रोत कोड में पाई जा सकती हैं ।
अब आप या तो टेम्पलेट को स्क्रैच से लिखकर ओवरराइड कर सकते हैं या इसे बढ़ा सकते हैं और फिर विशिष्ट ब्लॉकों को ओवरराइड / विस्तारित कर सकते हैं।
उदाहरण के लिए, यदि आप सबकुछ अपने पास रखना चाहते हैं, लेकिन content
ब्लॉक को ओवरराइड करना चाहते हैं (जो कि इंडेक्स पेज उन ऐप्स और उनके मॉडल को सूचीबद्ध करता है जिन्हें आपने पंजीकृत किया है), निम्नलिखित में जोड़ें templates/admin/index.html
:
{% extends 'admin/index.html' %}
{% block content %}
<h1>
Hello, {{ world }}!
</h1>
{% endblock %}
किसी ब्लॉक की मूल सामग्री को संरक्षित करने के लिए, {{ block.super }}
जहाँ भी आप मूल सामग्री प्रदर्शित करना चाहते हैं , उसे जोड़ें :
{% extends 'admin/index.html' %}
{% block content %}
<h1>
Hello, {{ world }}!
</h1>
{{ block.super }}
{% endblock %}
आप extrastyle
और extrahead
ब्लॉक को संशोधित करके कस्टम शैली और स्क्रिप्ट भी जोड़ सकते हैं ।