base.css와 같은 관리자 django의 특정 CSS를 변경하고 싶습니다. django 라이브러리에서 직접 변경하는 것이 더 낫습니까? 어떻게하면 가장 좋은 방법으로 재정의 할 수 있습니까?
base.css와 같은 관리자 django의 특정 CSS를 변경하고 싶습니다. django 라이브러리에서 직접 변경하는 것이 더 낫습니까? 어떻게하면 가장 좋은 방법으로 재정의 할 수 있습니까?
답변:
당신이 무엇을하고 싶은지에 따라 다릅니다. 무엇보다 먼저 Django 관리자에서 직접 덮어 쓰지 마십시오. 합리적이라고 생각하는 두 가지 옵션이 있습니다.
{% block extrastyle %}{% endblock %}
에서 django/contrib/admin/templates/admin/base.html
예를 들어.Media
.NET Framework 의 메타 클래스를 통해 스타일을 추가 할 수 있습니다 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
하고<style>
{% block extrahead %}
예:
{% extends "admin/base_site.html" %}
{% block extrahead %}
<style>
.field-__str__ {
font-family: Consolas, monospace;
}
</style>
{% endblock %}
마지막에 내 자신의 CSS 파일에 대한 참조를 포함하도록 admin / base.html을 확장했습니다. 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를 업그레이드 할 때 절대 변하지 않을 것이라는 것을 어떻게 알 수 있습니까? (I 평균 네이 답변이 3 세이며 여전히 작동하지만 더 garantuee 없습니다)
정적 디렉터리에서 static/admin/css/base.css
파일을 만듭니다 .
Django의 기본 Admin CSS를 먼저 붙여 넣은 다음 하단에 사용자 정의를 추가하십시오.
django.contrib.admin
이 INSTALLED_APPS
. 그렇지 않으면 collectstatic이 먼저 admin base.css를 찾고 사용자 정의 된 버전이이를 덮어 쓰지 않습니다.
전역 범위를 원하고 템플릿 재정의에 대해 생각하고 싶지 않다면 mixin이이 작업에 정말 잘 작동합니다. 원하는 곳에이 코드를 넣으십시오.
class CSSAdminMixin(object):
class Media:
css = {
'all': ('css/admin.css',),
}
그런 다음 admin.css
재정의와 함께 호출되는 CSS 파일을 만듭니다. 예를 들면 다음과 같습니다.
select[multiple] {
resize: vertical;
}
그런 다음 원하는 모델에서 다음을 수행하십시오.
class MyModelAdmin(admin.ModelAdmin, CSSAdminMixin):
그리고 당신은 모든 준비가 될 것입니다.