में व्यवस्थापक सीएसएस ओवरराइड करना मैं admin.cj जैसे admin cjango में कुछ सीएसएस को बदलना चाहता हूं। क्या सीधे django पुस्तकालय में बदलना बेहतर है? मैं इसे सबसे अच्छे तरीके से कैसे ओवरराइड कर सकता हूं?django
django
उत्तर
यह आप जो कुछ करना चाहते हैं उस पर निर्भर करता है। हालांकि सबसे पहले: सीधे Django व्यवस्थापक में इसे ओवरराइट न करें। आपको दो विकल्प मिलते हैं जो मुझे लगता है कि उचित हैं:
- यदि आप सामान्य रूप से व्यवस्थापक की उपस्थिति को बदलना चाहते हैं तो आपको व्यवस्थापक टेम्पलेट्स को ओवरराइड करना चाहिए। यह यहां विवरण में शामिल है: Overriding admin templates। कभी-कभी आप मूल व्यवस्थापक फ़ाइल का विस्तार कर सकते हैं और फिर उदाहरण के रूप में
django/contrib/admin/templates/admin/base.html
में{% block extrastyle %}{% endblock %}
जैसे ब्लॉक को ओवरराइट कर सकते हैं। - यदि आपकी शैली मॉडल विशिष्ट है तो आप अपने
admin.py
मेंMedia
मेटा क्लास के माध्यम से अतिरिक्त शैलियों को जोड़ सकते हैं। यहाँ एक उदाहरण देखें:
class MyModelAdmin(admin.ModelAdmin): class Media: js = ('js/admin/my_own_admin.js',) css = { 'all': ('css/admin/my_own_admin.css',) }
शायद grappelli आप बचत होगी परेशान ...
https://github.com/sehmaschine/django-grappelli
http://lincolnloop.com/static/slides/2010-djangocon/customizing-the-admin.html#slide37
मैं सिर्फ विस्तारित व्यवस्थापक/base.html अंत में अपनी खुद की सीएसएस फ़ाइल का संदर्भ शामिल करने के लिए। सीएसएस की सुंदरता यह है कि आपको मौजूदा परिभाषाओं को छूने की ज़रूरत नहीं है, बस फिर से परिभाषित करें।
यह शायद सबसे साफ है और भविष्य में रिलीज के लिए आशा रखता है –
अपनी स्थिर निर्देशिका में, static/admin/css/base.css
फ़ाइल बनाएं।
पहले Django's default Admin CSS में चिपकाएं, और फिट होने पर समायोजित करें।
यदि आप ऐसा करते हैं, तो 'INSTALLED_APPS' की सूची में' django.contrib.admin' से पहले अपना ऐप डालना सुनिश्चित करें। यदि आप नहीं करते हैं, तो संग्राहक को व्यवस्थापक base.css पहले मिलेगा और आपका कस्टमाइज़ किया गया संस्करण इसे ओवरराइट नहीं करेगा। – Dave
यह एक अच्छा दीर्घकालिक समाधान नहीं है। यह कोड का एक समूह कॉपी/पेस्ट करता है और इसे Django के उन्नयन के रूप में बनाए रखा नहीं जाएगा। – mlissner
Django व्यवस्थापक के लिए कोई स्टाइल मूल रूप से कोड का एक कांटा है। Django के लिए एक अद्यतन प्रभावी रूप से अपने अनुकूलन तोड़ सकता है। मेरी सिफारिश है कि अनुकूलन को न्यूनतम रखें और उन्हें Django की डिफ़ॉल्ट स्टाइल के नीचे जोड़ें। फिर आप जब चाहें डिफ़ॉल्ट स्टाइल मैन्युअल रूप से अपडेट कर सकते हैं। –
STATICFILES_DIRS
में किसी फ़ोल्डर के अंदर admin/css/changelists.css
है, और यह उपयोगकर्ता डिफ़ॉल्ट व्यवस्थापक के बजाय changelists.css उपयोगकर्ता करेगा।
यह समाधान व्यवस्थापक साइट के लिए काम करेगा, मुझे लगता है कि यह सबसे साफ तरीका है क्योंकि यह base_site.html
ओवरराइड करता है जो django को अपग्रेड करते समय परिवर्तित नहीं होता है।
अपनी टेम्पलेट निर्देशिका में admin
नामक फ़ोल्डर को base_site.html
नामक फ़ाइल बनाएं।
के तहत अपनी स्थैतिक निर्देशिका में admin-extra.css
नामक एक फ़ाइल बनाएं।
इसमें सभी कस्टम सीएसएस लिखें जो आप अपने फॉर्मों के लिए चाहते हैं: body{background: #000;}
।
base_site.html
में पेस्ट करें:
{% extends "admin/base.html" %}
{% load static from staticfiles %} # This might be just {% load static %} in your ENV
{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "css/admin-extra.css" %}" />{% endblock %}
{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>
{% endblock %}
{% block nav-global %}{% endblock %}
यह है कि! आपने
धन्यवाद, महान काम करता है! यदि यह काम नहीं करता है, तो सुनिश्चित करें कि आपका ऐप 'INSTALLED_APPS' में व्यवस्थापक ऐप से पहले है, अन्यथा आपका टेम्पलेट django के ओवरराइड नहीं करता है। – Dirbaio
यदि आप वैश्विक क्षेत्र चाहते हैं और आप ओवरराइडिंग टेम्पलेट्स के बारे में नहीं सोचना चाहते हैं तो एक मिश्रण इस के लिए वास्तव में अच्छा काम करता है।तब
class CSSAdminMixin(object):
class Media:
css = {
'all': ('css/admin.css',),
}
, एक सीएसएस अपने ओवरराइड के साथ admin.css
बुलाया फ़ाइल बनाने, उदाहरण के लिए: इस कोड को भी आप चाहते हैं,
select[multiple] {
resize: vertical;
}
फिर, जो कुछ भी मॉडल आप चाहते हैं में कार्य करें:
class MyModelAdmin(admin.ModelAdmin, CSSAdminMixin):
और आप सभी सेट हो जाएंगे।
settings.py
में, सुनिश्चित करें कि आपका ऐपINSTALLED_APPS
में व्यवस्थापक से पहले सूचीबद्ध है।(your-app)/templates/admin/base_site.html
बनाएँ और{% block extrahead %}
उदाहरण में <style>
ब्लॉक कर दिया:
{% extends "admin/base_site.html" %}
{% block extrahead %}
<style>
.field-__str__ {
font-family: Consolas, monospace;
}
</style>
{% endblock %}
- 1. django-mutant django-admin
- 2. django + django- पंजीकरण
- 3. Django: प्रत्येक दृश्य (django)
- 4. django - django-taggit form
- 5. Django
- 6. Django
- 7. Django
- 8. django
- 9. Django
- 10. Django
- 11. Django
- 12. django
- 13. django
- 14. Django:
- 15. django
- 16. Django
- 17. django
- 18. django
- 19. Django
- 20. django
- 21. Django
- 22. Django
- 23. Django
- 24. Django -
- 25. Django
- 26. Django
- 27. Django
- 28. django
- 29. Django
- 30. Django
वास्तव में, यह मॉडल स्तर लेकिन पूरे साइट पर ही नहीं है। Base.css, ie.css आदि में विशिष्ट परिवर्तन होने के लिए एक विकल्प है मेरे व्यवस्थापक में व्यवस्थापक/base.html को शामिल करना और व्यवस्थापक/base.html फ़ाइल में मेरे कस्टम base.css का उपयोग करना। इस तरह मुझे django व्यवस्थापक से अपनी खुद की साइट पर कुछ टेम्पलेट फ़ाइलों को शामिल करना होगा। क्या इससे कोई बेहतर समाधान है? –
कोई भी मुझे पता नहीं है। Django व्यवस्थापक अंत में एक django reusable ऐप से कुछ और नहीं है। किसी भी अन्य पुन: प्रयोज्य ऐप के साथ जाने का यही तरीका है। –
मुझे लगता है कि यहां जेएस के भीतर सूचीबद्ध एक .css फ़ाइल है ... क्या वास्तव में यह काम करता है? मैं इसे प्राप्त नहीं कर सकता। – fastmultiplication