Adminの特定のCSSを変更したいDjango base.cssのように。Djangoライブラリで直接変更した方がよいですか?最良の方法?
やりたいことがたくさんあります。まず第一に:Django adminで直接上書きしないでください。合理的だと思う2つのオプションがあります。
{% block extrastyle %}{% endblock %}
のDjango/contrib/admin/templates/admin/base.html
のようなブロックを上書きすることができます。admin.py
のMedia
メタクラスを介して追加のスタイルを追加できます。こちらの例をご覧ください。class MyModelAdmin(admin.ModelAdmin): class Media: js = ('js/admin/my_own_admin.js',) css = { 'all': ('css/admin/my_own_admin.css',) }
最後にadmin/base.htmlを拡張して、自分のcssファイルへの参照を追加しました。 cssの素晴らしい点は、既存の定義に触れる必要がなく、再定義するだけです。
このソリューションは管理サイトで機能します。Djangoをアップグレードしても変更されないbase_site.html
を上書きするため、最もクリーンな方法だと思います。
テンプレートディレクトリにadmin
というフォルダーを作成し、その中にbase_site.html
という名前のファイルを作成します。
css
の下の静的ディレクトリにadmin-extra.css
というファイルを作成します。
body{background: #000;}
のように、フォームに必要なすべてのカスタムcssを記述します。
これを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 %}
それでおしまい!終わった
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 %}
静的ディレクトリで、static/admin/css/base.css
ファイル。
Djangoのデフォルトの管理CSS を最初に貼り付けてから、下部にカスタマイズを追加します。
グローバルスコープが必要で、テンプレートのオーバーライドを考えたくない場合は、このためにmixinが非常にうまく機能します。このコードを好きな場所に置いてください:
class CSSAdminMixin(object):
class Media:
css = {
'all': ('css/admin.css',),
}
次に、オーバーライドを使用してadmin.css
というCSSファイルを作成します。次に例を示します。
select[multiple] {
resize: vertical;
}
次に、必要なモデルで次の操作を行います。
class MyModelAdmin(admin.ModelAdmin, CSSAdminMixin):
そして、あなたはすべて設定されます。
おそらくグラペッリはあなたを悩ますことを救うでしょう...
http://grappelliproject.com/
古くて古い...
https://lincolnloop.com/blog/customizing-Django-admin-eurodjangocon-2009/
持ってる admin/css/changelists.css
フォルダー内のSTATICFILES_DIRS
、およびデフォルトの管理者の代わりにchangelists.cssを使用します。