Переопределение определенных файлов css администратора в Django

#python #css #django #django-admin

#python #css #django #django-admin

Вопрос:

Переопределить шаблоны администратора так же просто, как создать папку admin в каталоге шаблонов и скопировать в нее любые файлы шаблонов, которые вы хотите переопределить. Однако я просто хочу поиграть с таблицами стилей администратора, поэтому я создал папку admin в своей папке static files и поместил css/base.css в нее. В отличие от решения templates, это, похоже, не работает.

Итак, есть ли какой-либо способ переопределить отдельные файлы css так django.contrib.admin же, как вы можете переопределить шаблоны? Если нет, что было бы лучшим решением для переопределения файлов css? Я ищу решение, не копирующее все медиафайлы администратора в мой проект и изменение статического каталога администратора

Комментарии:

1. Вы хотите перезаписать CSS для всех страниц в admin или только для определенных списков изменений или моделей?

Ответ №1:

Для достижения этой цели я переопределяю base_site.html шаблон следующим образом:

 {% block blockbots %}
<link rel="stylesheet" type="text/css" href="/media/css/my_admin.css" />
{{ block.super }}
{% endblock %}
  

Я вставил CSS blockbots вместо extrahead того, чтобы быть уверенным, что он загружен в конце, поэтому он переопределит все остальные CSS.

Комментарии:

1. В последних версиях django вы можете использовать extrastyle блок вместо этого.

Ответ №2:

Я ищу решение, не копирующее все медиафайлы администратора в мой проект и изменение статического каталога администратора

Я не думаю, что действительно есть альтернатива. Вы копируете медиафайлы в новый каталог и при запуске сервера передаете аргумент adminmedia командной строки, например

 python manage.py runserver --adminmedia=./myadminmedia
  

В любом случае, когда вы запускаете его на рабочем сервере, носитель администратора должен обслуживаться с хорошего статического сервера обслуживания, для которого вы можете указать этот новый путь.

Ссылка из документов: https://docs.djangoproject.com/en/1.3/ref/django-admin/#django-admin-option—adminmedia

Комментарии:

1. Также /usr/local/lib/python2.6/dist-packages/django/bin/django-admin.py: error: no such option: --adminmedia

2. Хорошо, итак --aminmedia , сделка вообще не сработала, но в итоге я все равно просто настроил Apache для разработки, что делает этот ответ самым близким.

3. Вот ссылка на —adminmedia: docs.djangoproject.com/en/dev/ref/django-admin /…

Ответ №3:

Вероятно, вы можете взломать свой urls.py файл и укажите только один URL-адрес носителя, который будет обслуживаться из локальной папки, в то время как остальные обслуживаются из каталога Django (в режиме разработки).