[django] 장고에서 관리자 CSS 재정의

base.css와 같은 관리자 django의 특정 CSS를 변경하고 싶습니다. django 라이브러리에서 직접 변경하는 것이 더 낫습니까? 어떻게하면 가장 좋은 방법으로 재정의 할 수 있습니까?



답변

당신이 무엇을하고 싶은지에 따라 다릅니다. 무엇보다 먼저 Django 관리자에서 직접 덮어 쓰지 마십시오. 합리적이라고 생각하는 두 가지 옵션이 있습니다.

  1. 일반적으로 관리자의 모양을 변경하려면 관리자 템플릿을 재정의해야합니다. 자세한 내용은 관리 템플릿 재정의 에서 다룹니다 . 가끔은 그냥 원래 관리자 파일을 확장 할 수있는 다음과 같은 블록을 덮어 {% block extrastyle %}{% endblock %}에서 django/contrib/admin/templates/admin/base.html예를 들어.
  2. 스타일이 모델에 특정한 경우 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를 재정의하지 않습니다.

그게 다야! 끝났어


답변

정적 디렉터리에서 static/admin/css/base.css파일을 만듭니다 .

Django의 기본 Admin CSS를 먼저 붙여 넣은 다음 하단에 사용자 정의를 추가하십시오.


답변

전역 범위를 원하고 템플릿 재정의에 대해 생각하고 싶지 않다면 mixin이이 작업에 정말 잘 작동합니다. 원하는 곳에이 코드를 넣으십시오.

class CSSAdminMixin(object):
    class Media:
        css = {
            'all': ('css/admin.css',),
        }

그런 다음 admin.css재정의와 함께 호출되는 CSS 파일을 만듭니다. 예를 들면 다음과 같습니다.

select[multiple] {
    resize: vertical;
}

그런 다음 원하는 모델에서 다음을 수행하십시오.

class MyModelAdmin(admin.ModelAdmin, CSSAdminMixin):

그리고 당신은 모든 준비가 될 것입니다.


답변

가지고 admin/css/changelists.css있는 폴더 안에 STATICFILES_DIRS, 그것은 것입니다 사용자 대신 기본 관리 하나의 changelists.css 그.