Я хочу изменить определенный css в admin django как base.css. Лучше ли меняться непосредственно в библиотеке django? Как я могу отменить это наилучшим образом?Переопределение admin css в django
ответ
Это зависит от того, что вы хотите сделать. Хотя прежде всего: не переписывайте его в администраторе Django напрямую. У вас есть два варианта, которые я считаю разумными:
- Если вы хотите изменить внешний вид администратора в целом, вы должны переопределить шаблоны администратора. Это подробно описано здесь: Overriding admin templates. Иногда вы можете просто расширить исходный файл администратора, а затем перезаписать блок, например
{% block extrastyle %}{% endblock %}
, вdjango/contrib/admin/templates/admin/base.html
. - Если ваш стиль специфичен для модели, вы можете добавить дополнительные стили с помощью метакласса
Media
вadmin.py
. Смотрите пример здесь:
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 включить ссылку на мой собственный файл css - в конце. Красота css заключается в том, что вам не нужно касаться существующих определений, просто переопределяйте их.
Это, пожалуй, самый чистый и надеется на будущие выпуски –
В вашем статическом каталоге создайте файл static/admin/css/base.css
.
Сначала вставьте в Django's default Admin CSS и отрегулируйте, как вы сочтете нужным.
Если вы сделаете это, обязательно добавьте свое приложение ДО 'django.contrib.admin' в список' INSTALLED_APPS'. Если вы этого не сделаете, collectstatic сначала найдет admin base.css, и ваша настраиваемая версия не перезапишет его. – Dave
Это нехорошее долгосрочное решение. Он копирует/вставляет кучу кода, и он не будет поддерживаться как обновления Django. – mlissner
Любой стиль для администратора Django в основном является вилкой кода. Обновление Django может фактически нарушить ваши настройки. Моя рекомендация состоит в том, чтобы сохранить настройки до минимума и добавить их в нижней части стиля Django по умолчанию. Затем вы можете вручную обновить стиль по умолчанию, если и когда захотите. –
У вас есть admin/css/changelists.css
внутри папки в STATICFILES_DIRS
, и он будет использовать этот файл changelists.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 %}
Это Он! You'r done
Спасибо, отлично работает! Если это не работает, убедитесь, что ваше приложение находится перед приложением администратора в 'INSTALLED_APPS', иначе ваш шаблон не будет переопределять django. – Dirbaio
Если вы хотите получить глобальный охват, и вы не хотите думать о переопределении шаблонов, mixin отлично работает для этого.Поместите этот код там, где вы хотите:
class CSSAdminMixin(object):
class Media:
css = {
'all': ('css/admin.css',),
}
Затем создайте файл CSS под названием admin.css
с вашими переопределениями, например:
select[multiple] {
resize: vertical;
}
Тогда, в любой модели вы хотите, сделайте следующее:
class MyModelAdmin(admin.ModelAdmin, CSSAdminMixin):
И все будет готово.
- В
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 %}
- 1. Переопределение методов просмотра admin - Django
- 2. Переопределение метода аутентификации - admin Django
- 3. Переопределение главной страницы Django Admin? - Django
- 4. переопределение имен заголовков модулей в django admin
- 5. переопределение содержимого метки поля admin в django
- 6. Переопределение заголовка «Добавить пользователя» в django admin
- 7. django: admin widget css?
- 8. Django Admin - переопределение виджета пользовательского поля формы
- 9. Django Admin: переопределение начального значения для строк
- 10. Appfog Django admin css отсутствует
- 11. Переопределение значения href img src в ImageField в Django admin
- 12. Нет css в django admin страница
- 13. Конфликтующий Bootstrap и admin css в Django
- 14. Django Admin Страница отсутствует CSS в IIS
- 15. Django: переопределение base_site.html
- 16. Переопределение панели управления django admin и добавление логики на нее
- 17. Django 1.9 admin не показывает стиль CSS
- 18. Редактировать css-файлы из django admin
- 19. Django: Not Found static/admin/css
- 20. Django Admin - Любая замена css, созданная сообществом
- 21. Переопределение дома в django
- 22. Ошибка в index.html django-admin с помощью django-admin-уведомлений
- 23. Django - django-admin-tools
- 24. Django, переопределяющее поведение Admin Model
- 25. Django custom user admin change_password
- 26. CSS - переопределение CSS Reset
- 27. переопределение save_form в Admin не работает для inline'd Admin
- 28. Django Admin Templating
- 29. Django Admin
- 30. Django contrib admin admin admin и пароль
На самом деле, это не уровень модели, но сам весь сайт. Чтобы быть конкретными изменениями в base.css, ie.css и т. Д. Один из вариантов - включить admin/base.html в мое приложение и использовать свой пользовательский base.css в файле admin/base.html. Таким образом, я должен будет добавить некоторые файлы шаблонов из admin django на мой собственный сайт. Есть ли лучшее решение, чем это? –
Нет. Я знаю. Администратор django - это не что иное, как приложение для повторного использования django. Это способ пойти с любым другим многоразовым приложением. –
Я замечаю, что есть файл .css, указанный в js здесь ... действительно ли это работает? Я не могу это понять. – fastmultiplication