base.cssのようなadmindjangoの特定のcssを変更したい。djangoライブラリで直接変更する方が良いですか?どうすれば最良の方法でオーバーライドできますか?
base.cssのようなadmindjangoの特定のcssを変更したい。djangoライブラリで直接変更する方が良いですか?どうすれば最良の方法でオーバーライドできますか?
回答:
それはあなたがやりたいことの多くに依存します。まず第一に:Django管理者で直接上書きしないでください。あなたは私が合理的だと思う2つのオプションを手に入れました:
{% 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',)
}
settings.py
アプリがで管理する前にリストされていることを確認しますINSTALLED_APPS
。(your-app)/templates/admin/base_site.html
およびput<style>
にブロックを{% block extrahead %}
例:
{% extends "admin/base_site.html" %}
{% block extrahead %}
<style>
.field-__str__ {
font-family: Consolas, monospace;
}
</style>
{% endblock %}
このソリューションは管理サイト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
ファイルを作成します。
最初にDjangoのデフォルトの管理CSSを貼り付けてから、下部にカスタマイズを追加します。
django.contrib.admin
をのリストに追加してくださいINSTALLED_APPS
。そうしないと、collectstaticは最初にadmin base.cssを見つけ、カスタマイズされたバージョンはそれを上書きしません。
グローバルスコープが必要で、テンプレートのオーバーライドについて考えたくない場合は、ミックスインがこれに非常に適しています。このコードを好きな場所に置いてください:
class CSSAdminMixin(object):
class Media:
css = {
'all': ('css/admin.css',),
}
次に、admin.css
オーバーライドを使用して呼び出されるCSSファイルを作成します。次に例を示します。
select[multiple] {
resize: vertical;
}
次に、必要なモデルで次の手順を実行します。
class MyModelAdmin(admin.ModelAdmin, CSSAdminMixin):
そして、あなたはすべて設定されます。