Я хочу изменить определенный css в админке django, например base.css. Лучше менять прямо в библиотеке django? Как я могу отменить это наилучшим образом?
django
django-admin
раджан стхапит
источник
источник
Ответы:
Это во многом зависит от того, чем вы хотите заниматься. Хотя прежде всего: не перезаписывайте его напрямую в админке Django. У вас есть два варианта, которые я считаю разумными:
{% block extrastyle %}{% endblock %}
вdjango/contrib/admin/templates/admin/base.html
примере.Media
мета-класс в вашемadmin.py
. См. Пример здесь:источник
settings.py
, убедитесь , что ваше приложение в списке перед администратором вINSTALLED_APPS
.(your-app)/templates/admin/base_site.html
и поместите<style>
блок в{% block extrahead %}
Пример:
{% extends "admin/base_site.html" %} {% block extrahead %} <style> .field-__str__ { font-family: Consolas, monospace; } </style> {% endblock %}
источник
Я просто расширил admin / base.html, включив ссылку на мой собственный файл css - в конце. Прелесть css в том, что вам не нужно касаться существующих определений, просто заново определите.
источник
Это решение будет работать для сайта администратора, я думаю, что это самый чистый способ, потому что он переопределяет
base_site.html
что не меняется при обновлении django.Создайте в каталоге шаблонов папку с именем
admin
в ней, создайте файл с именемbase_site.html
.Создайте в своем статическом каталоге
css
файл с именемadmin-extra.css
.Напишите в нем все настраиваемые 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
Это оно! ты закончил
источник
INSTALLED_APPS
, иначе ваш шаблон не переопределяет шаблон django.base_site.html
это никогда не изменится при обновлении django? (Я имею в виду, что да, этому ответу 3 года, и он все еще работает, но это не гарант)В своем статическом каталоге создайте
static/admin/css/base.css
файл.Сначала вставьте стандартный CSS-код администратора Django , а затем добавьте свои настройки внизу.
источник
django.contrib.admin
в списокINSTALLED_APPS
. Если вы этого не сделаете, collectstatic сначала найдет admin base.css, и ваша настроенная версия не перезапишет его.Если вам нужна глобальная область видимости и вы не хотите думать о переопределении шаблонов, для этого очень хорошо подходит миксин. Поместите этот код где хотите:
class CSSAdminMixin(object): class Media: css = { 'all': ('css/admin.css',), }
Затем создайте файл CSS
admin.css
с вашими переопределениями, например:select[multiple] { resize: vertical; }
Затем в любых моделях выполните:
class MyModelAdmin(admin.ModelAdmin, CSSAdminMixin):
И все будет готово.
источник
Имейте
admin/css/changelists.css
внутри папкуSTATICFILES_DIRS
, и он будет использовать этот файл changelists.css вместо административного по умолчанию.источник