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를 재정의하지 않습니다.
그게 다야! 끝났어
답변
답변
전역 범위를 원하고 템플릿 재정의에 대해 생각하고 싶지 않다면 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 그.