시스템 검사 프레임워크는 Django 프로젝트의 유효성을 검사하기 위한 일련의 정적 검사입니다. 일반적인 문제를 감지하고 해결 방법에 대한 힌트를 제공합니다. 프레임워크는 확장 가능하므로 자체 검사를 쉽게 추가할 수 있습니다.
자신의 검사를 추가하고 Django의 시스템 검사와 통합하는 방법에 대한 자세한 내용은 :doc:`System check topic guide </topics/checks>`을 참조하십시오.
CheckMessage
(level, msg, hint=None, obj=None, id=None)¶시스템 검사에서 발생하는 경고 및 오류는 ``CheckMessage``의 인스턴스여야 합니다. 인스턴스는 보고 가능한 단일 오류 또는 경고를 캡슐화합니다. 또한 메시지에 적용할 수 있는 컨텍스트 및 힌트와 필터링 목적으로 사용되는 고유 식별자를 제공합니다.
생성자 인수는 다음과 같습니다:
DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
. 레벨이 ``ERROR``보다 크거나 같으면, Django는 관리 명령이 실행되지 않도록 합니다. ``ERROR``보다 낮은 수준의 메시지(예: 경고)는 콘솔에 보고되지만 음소거될 수 있습니다.None
값을 사용할 수 있습니다.__str__()
메서드를 정의하는 다른 객체여야 합니다. 이 메서드는 모든 메시지를 보고할 때 사용되며 그 결과가 메시지보다 우선합니다.applabel.X001
패턴을 따라야 합니다. 여기서 X``는 메시지 심각도를 나타내는 ``CEWID
문자 중 하나입니다(중요의 경우 C
, 오류의 경우 E
). 등등). 번호는 애플리케이션에서 할당할 수 있지만, 해당 애플리케이션 내에서 고유한 값이어야 합니다.공통 수준으로 메시지를 더 쉽게 만들 수 있는 하위 클래스가 있습니다. 그것들을 사용할 때 level
인수는 클래스 이름에 의해 암시되기 때문에 생략할 수 있습니다.
Debug
(msg, hint=None, obj=None, id=None)¶Info
(msg, hint=None, obj=None, id=None)¶Warning
(msg, hint=None obj=None, id=None)¶Error
(msg, hint=None, obj=None, id=None)¶Critical
(msg, hint=None, obj=None, id=None)¶Django의 시스템 체크들은 다음의 태그들을 사용하여 정리되어 있습니다.
admin
: 관리 사이트 선언을 확인합니다.async_support
: 비동기 관련 구성을 확인합니다.caches
: 캐시 관련 구성을 확인합니다.호환성
: 버전 업그레이드와 관련된 잠재적인 문제를 표시합니다.database
: 데이터베이스 관련 구성 문제를 확인합니다. 데이터베이스 검사는 일반 검사처럼 정적 코드 분석 이상의 작업을 수행하기 때문에 기본적으로 실행되지 않습니다. 이들은 migrate
명령에 의해서만 실행되거나 check
명령을 호출할 때 --database
옵션을 사용하여 구성된 데이터베이스 별칭을 지정하는 경우에만 실행됩니다.files
: 파일 관련 구성을 확인합니다.models
: 모델, 필드 및 관리자 정의를 확인합니다.security
: 보안 관련 구성을 확인합니다.signals
: 신호 선언 및 처리기 등록을 확인합니다.sites
: django.contrib.sites
구성을 확인합니다.staticfiles
: django.contrib.staticfiles
구성을 확인합니다.templates
: 템플릿 관련 구성을 확인합니다.translation
: 번역 관련 설정을 확인합니다.urls
: URL 구성을 확인합니다.일부 확인은 여러 태그로 등록될 수 있습니다.
다음 검사는 :doc:`/topics/async`에 대한 설정을 확인합니다:
DJANGO_ALLOW_ASYNC_UNSAFE
환경 변수를 설정하면 안 됩니다. 설정하면 :ref:`비동기 안전 보호 <async-safety>`이 비활성화됩니다.호환성 검사는 Django를 업그레이드한 후 발생할 수 있는 잠재적 문제에 대해 경고합니다.
다음 검사는 CACHES
설정이 올바르게 구성되었는지 확인합니다:
CACHES
설정에서 'default'
캐시를 정의해야 합니다.<cache>
구성은 해당 LOCATION <CACHES-LOCATION>`가 :setting:`MEDIA_ROOT
/STATIC_ROOT
/:setting:`STATICFILES_DIRS`와 일치/내부에 있음/포함하고 있기 때문에 캐시를 노출하거나 데이터 손상으로 이어질 수 있습니다.<cache>
캐시 :setting:`LOCATION <CACHES-LOCATION>`는 상대적입니다. 대신 절대 경로를 사용하십시오.MySQL 또는 MariaDB를 사용하는 경우, 다음 검사가 수행됩니다:
CharField
s가 max_length
> 255를 갖는 것을 허용하지 않습니다. 이 검사는 실제 최대 크기는 여러 요인에 따라 달라지므로 Django 3.1에서*``mysql.W003``*으로 변경되었습니다.CharField
s가 max_length
> 255를 갖는 것을 허용하지 않을 수 있습니다.다음 검사는 :doc:`/topics/files`에 대한 설정을 확인합니다:
FILE_UPLOAD_TEMP_DIR
설정은 존재하지 않는 디렉토리 ``<path>``을 참조합니다.choices``는 ``(실제 값, 사람이 읽을 수 있는 이름)
튜플을 포함하는 이터러블이어야 합니다.db_index``는 ``None
, True
또는 False
중 하나여야 합니다.max_length``가 너무 작아 ``choices``(``<count>
문자)의 가장 긴 값에 맞지 않습니다.<field>
기본값은 모든 필드 인스턴스 간에 공유되지 않도록 인스턴스 대신 콜러블이어야 합니다.BooleanField
s는 null 값을 허용하지 않습니다. 이 검사는 Django 2.1에서 null 값 지원이 추가되기 전에 나타났습니다.CharField``는 ``max_length
속성을 정의해야 합니다.DecimalField
s는 decimal_places
속성을 정의해야 합니다.DecimalField
s는 max_digits
속성을 정의해야 합니다.FilePathField
s에는 allow_files
또는 ``allow_folders``가 True로 설정되어 있어야 합니다.GenericIPAddressField
s는 ``null=False``인 경우 ``blank=True``를 가질 수 없습니다. 빈 값은 null로 저장되기 때문입니다.auto_now
, auto_now_add
및 default
옵션은 상호 배타적입니다. 이러한 옵션 중 하나만 존재할 수 있습니다.<database>``은 ``<field data type>
열에 대한 데이터베이스 인덱스를 지원하지 않습니다.<database>
does not support comments on columns
(db_comment
).<database>``은 ``JSONField
s를 지원하지 않습니다.<database>``은 ``<field_type>
s에서 데이터베이스 데이터 정렬을 지원하지 않습니다.django.contrib.postgres.fields.CICharField
is
deprecated. Support for it (except in historical migrations) will be removed
in Django 5.1.django.contrib.postgres.fields.CIEmailField
is
deprecated. Support for it (except in historical migrations) will be removed
in Django 5.1.django.contrib.postgres.fields.CITextField
is
deprecated. Support for it (except in historical migrations) will be removed
in Django 5.1.<swappable>``은 ``app_label.app_name
형식이 아닙니다.<model>``의 ``<field name>
필드가 상위 모델 <model>``의 ``<field name>
필드와 충돌합니다.index_together
요소들은 리스트이거나 튜플이어야 합니다.unique_together
요소는 목록 또는 튜플이어야 합니다.constraints/indexes/index_together/unique_together``는 ``ManyToManyField
<field name>``을 참조하지만 ``ManyToManyField
s는 해당 옵션에 대해 지원되지 않습니다.constraints/indexes/index_together/unique_together``는 모델 ``<model>``에 로컬이 아닌 ``<field_name>
필드를 참조합니다.<model>.check()
클래스 메서드가 현재 재정의되었습니다.ordering
및 ``order_with_respect_to``는 함께 사용할 수 없습니다.db_table
<db_table>``은 여러 모델에서 사용됩니다: ``<model list>
.<index>``은 모델 간에 고유하지 않습니다: ``<model list>
.<constraint>``은 모델 간에 고유하지 않습니다: ``<model list>
.<index>``은 ``<max_length>
문자보다 길 수 없습니다.db_table
<db_table>``은 여러 모델에서 사용됩니다: ``<model list>
.django.db.models.AutoField
).<constraint>``에는 ``RawSQL()
표현식이 포함되어 있으며 모델 full_clean()
동안 유효성이 검사되지 않습니다.<database>
does not support comments on tables
(db_table_comment
).보안 검사는 사이트를 안전하게 만들지 않습니다. 코드를 감사하거나, 침입 탐지를 수행하거나, 특히 복잡한 작업을 수행하지 않습니다. 오히려, 사이트의 보안을 개선하는 데 도움이 될 수 있는 자동화된 간단한 체크리스트를 수행하는 데 도움이 됩니다.
이러한 검사 중 일부는 특정 배포 구성에 적합하지 않을 수 있습니다. 예를 들어 로드 밸런서에서 HTTP에서 HTTPS로의 리디렉션을 수행하는 경우 :setting:`SECURE_SSL_REDIRECT`를 활성화하지 않은 것에 대해 지속적으로 경고를 받으면 짜증이 날 것입니다. 불필요한 검사를 중지하려면 :setting:`SILENCED_SYSTEM_CHECKS`를 사용하세요.
check --deploy
옵션을 사용하는 경우, 다음 검사가 실행됩니다:
MIDDLEWARE`에 :class:`django.middleware.security.SecurityMiddleware`가 없으므로 :setting:`SECURE_HSTS_SECONDS
, SECURE_CONTENT_TYPE_NOSNIFF
, :setting :SECURE_REFERRER_POLICY, SECURE_CROSS_ORIGIN_OPENER_POLICY
및 SECURE_SSL_REDIRECT
설정은 적용되지 않습니다.MIDDLEWARE`에 :class:`django.middleware.clickjacking.XFrameOptionsMiddleware`가 없으므로 페이지가 `
’x-frame-options’``와 함께 제공되지 않습니다. 헤더. 사이트를 프레임으로 제공해야 하는 타당한 이유가 없는 한, 이 헤더를 활성화하여 클릭재킹 공격을 방지하는 것이 좋습니다.django.middleware.csrf.CsrfViewMiddleware
가 MIDDLEWARE
안에 없습니다)를 통한 Django에 내재된 사이트 간 요청 위조 보호 기능을 사용하지 않는 것 같습니다. 미들웨어를 활성화하는 것이 허점을 남기지 않도록 하는 가장 안전한 방법입니다.SECURE_HSTS_SECONDS
설정에 대한 값을 설정하지 않았습니다. 전체 사이트가 SSL을 통해서만 제공되는 경우 값을 설정하고 :ref:`HTTP Strict Transport Security <http-strict-transport-security>`을 활성화하는 것이 좋습니다. 설명서를 먼저 읽으십시오. 부주의하게 HSTS를 활성화하면 돌이킬 수 없는 심각한 문제가 발생할 수 있습니다.SECURE_HSTS_INCLUDE_SUBDOMAINS
설정을 ``True``로 설정하지 않았습니다. 이것이 없으면, 귀하의 사이트는 하위 도메인에 대한 안전하지 않은 연결을 통한 공격에 잠재적으로 취약합니다. 도메인의 모든 하위 도메인이 SSL을 통해서만 제공되어야 한다고 확신하는 경우에만 ``True``로 설정하십시오.SECURE_CONTENT_TYPE_NOSNIFF
설정이 ``True``로 설정되지 않았으므로 페이지가 ``’X-Content-Type-Options: nosniff’``와 함께 제공되지 않습니다. 헤더. 브라우저가 콘텐츠 유형을 잘못 식별하지 않도록 이 헤더를 활성화하는 것을 고려해야 합니다.SECURE_BROWSER_XSS_FILTER
설정이 True``로 설정되어 있지 않으므로 페이지에 ``'X-XSS-Protection: 1; mode=block'
헤더. 브라우저의 XSS 필터링을 활성화하고 XSS 공격을 방지하려면 이 헤더를 활성화하는 것을 고려해야 합니다. 이 검사는 Django 3.0에서 * ``X-XSS-Protection`` *헤더가 최신 브라우저에서 더 이상 인정되지 않으므로 제거되었습니다.SECURE_SSL_REDIRECT
설정이 ``True``로 설정되지 않았습니다. SSL 및 비 SSL 연결 모두에서 사이트를 사용할 수 있어야 하는 경우가 아니면 이 설정을 ``True``로 설정하거나 로드 밸런서 또는 리버스 프록시 서버를 구성하여 모든 연결을 HTTPS로 리디렉션할 수 있습니다.SECRET_KEY`의 문자가 50자 미만이거나, 고유 문자가 5자 미만이거나, Django에서 자동으로 생성되었음을 나타내는 `
’django-insecure-‘`` 접두사가 붙습니다. 긴 무작위 값을 생성하십시오. 그렇지 않으면 Django의 보안에 중요한 많은 기능이 공격에 취약합니다.MIDDLEWARE`에 :class:`django.contrib.sessions.middleware.SessionMiddleware`가 있지만 :setting:`SESSION_COOKIE_HTTPONLY`를 ``True``로 설정하지 않았습니다. . ``HttpOnly`
세션 쿠키를 사용하면 크로스 사이트 스크립팅 공격이 사용자 세션을 하이재킹하는 것이 더 어려워집니다.SESSION_COOKIE_HTTPONLY`가 ``True``로 설정되지 않았습니다. ``HttpOnly`
세션 쿠키를 사용하면 크로스 사이트 스크립팅 공격이 사용자 세션을 하이재킹하는 것이 더 어려워집니다.CSRF_COOKIE_HTTPONLY`가 ``True``로 설정되지 않았습니다. ``HttpOnly`
CSRF 쿠키를 사용하면 교차 사이트 스크립팅 공격이 CSRF 토큰을 훔치기가 더 어려워집니다. 이 검사는 Django 1.11에서 CSRF_COOKIE_HTTPONLY
설정이 실질적인 이점을 제공하지 않기 때문에 제거되었습니다.MIDDLEWARE`에 :class:`django.middleware.clickjacking.XFrameOptionsMiddleware`가 있지만 :setting:`X_FRAME_OPTIONS`가 `
’DENY’``로 설정되지 않았습니다. 귀하의 사이트가 프레임의 다른 부분을 제공해야 할 타당한 이유가 없다면 ``’DENY’’로 변경해야 합니다.SECURE_HSTS_PRELOAD
설정을 ``True``로 설정하지 않았습니다. 이것이 없으면 사이트를 브라우저 사전 로드 목록에 제출할 수 없습니다.SECURE_REFERRER_POLICY
설정을 지정하지 않았습니다. 이것이 없으면 귀하의 사이트는 Referrer-Policy 헤더를 보내지 않습니다. 사용자 개인 정보를 보호하려면 이 헤더를 활성화하는 것을 고려해야 합니다.SECURE_REFERRER_POLICY
설정을 잘못된 값으로 설정했습니다.SECURE_CROSS_ORIGIN_OPENER_POLICY
설정을 잘못된 값으로 설정했습니다.SECRET_KEY_FALLBACKS[n] <SECRET_KEY_FALLBACKS>`의 문자가 50자 미만이거나 고유 문자가 5자 미만이거나 Django에 의해 자동으로 생성되었음을 나타내는 `
’django-insecure-‘`` 접두사가 붙어 있습니다. 길고 임의의 값을 생성하십시오. 그렇지 않으면 Django의 보안에 중요한 많은 기능이 공격에 취약합니다.다음 검사는 보안 관련 설정이 올바르게 구성되었는지 확인합니다:
다음 검사는 TEMPLATES
설정이 올바르게 구성되었는지 확인합니다:
TEMPLATES`에 `
’APP_DIRS’: True``가 있지만 OPTIONS``에 ``'loaders'``도 지정합니다. ``APP_DIRS``를 제거하거나 ``'loaders'
옵션을 제거하십시오.string_if_invalid
in TEMPLATES
OPTIONS <TEMPLATES-OPTIONS>`은 문자열이어야 하지만 다음과 같았습니다: ``{value}`
({type}
) .<name>``은 여러 템플릿 태그 모듈에 사용됩니다: ``<module list>
. *이 검사는 Django 4.1.2*에서 *``templates.W003``으로 변경되었습니다.<name>``은 여러 템플릿 태그 모듈에 사용됩니다: ``<module list>
.변환 구성에서 다음 검사가 수행됩니다:
LANGUAGE_CODE
설정에 잘못된 값을 제공했습니다: <value>
.LANGUAGES
설정: ``<value>``에 잘못된 언어 코드를 제공했습니다.LANGUAGES_BIDI
설정: ``<value>``에 잘못된 언어 코드를 제공했습니다.LANGUAGES
설정에 없는 값을 LANGUAGE_CODE
설정에 제공했습니다.URL 구성에서 다음 검사가 수행됩니다:
include()
패턴 뒤에 ``/``가 있는지 확인하십시오.path()
및/또는 re_path()
인스턴스의 목록인지 확인하십시오.MEDIA_URL
/ STATIC_URL
설정은 슬래시로 끝나야 합니다.handlerXXX
보기 ``’path.to.view’``가 올바른 수의 인수를 사용하지 않습니다(…).handlerXXX
보기 ``’path.to.view’``를 가져올 수 없습니다.<pattern>``에 유효하지 않은 보기가 있습니다. ``<view>
대신 ``<view>.as_view()``를 전달하십시오.관리자
¶관리 검사는 모두 admin
태그의 일부로 수행됩니다.
관리 사이트에 등록된 :class:`~django.contrib.admin.ModelAdmin`(또는 하위 클래스)에서 다음 검사가 수행됩니다:
raw_id_fields
값은 리스트 또는 튜플이어야 합니다.raw_id_fields[n]
값은 <model>
필드가 아닌 ``<field name>``을 나타냅니다.raw_id_fields[n]
값은 외래 키 또는 다대다 필드여야 합니다.fields
값은 리스트 또는 튜플이어야 합니다.fields
값에 중복 필드가 포함되어 있습니다.fieldsets
값은 리스트 또는 튜플이어야 합니다.fieldsets[n]
값은 리스트 또는 튜플이어야 합니다.fieldsets[n][1]
값은 사전이어야 합니다.fieldsets[n][1]
값은 fields
키를 포함해야 합니다.fields[n]/fieldsets[n][m]
cannot include the
ManyToManyField
<field name>
, because that field manually specifies a
relationship model.exclude
값은 리스트 또는 튜플이어야 합니다.exclude
값에 중복 필드가 포함되어 있습니다.form
값은 ``BaseModelForm``에서 상속되어야 합니다.filter_vertical
값은 리스트 또는 튜플이어야 합니다.filter_horizontal
값은 리스트 또는 튜플이어야 합니다.filter_vertical[n]/filter_horizontal[n]
값은 <model>
필드가 아닌 ``<field name>``을 참조합니다.filter_vertical[n]/filter_horizontal[n]
값은 다대다 필드여야 합니다.radio_fields
값은 사전이어야 합니다.radio_fields
값은 ``<model>``의 필드가 아닌 ``<field name>``을 참조합니다.radio_fields
값은 ForeignKey
인스턴스가 아닌 <field name>``을 참조하며 ``choices
정의가 없습니다.radio_fields[<field name>]
값은 admin.HORIZONTAL
또는 ``admin.VERTICAL``이어야 합니다.view_on_site
값은 호출 가능하거나 부울 값이어야 합니다.prepopulated_fields
값은 사전이어야 합니다.prepopulated_fields
값은 <model>
필드가 아닌 ``<field name>``을 참조합니다.prepopulated_fields
값은 <field name>``을 참조하며, ``DateTimeField
, ForeignKey
, OneToOneField
또는 ManyToManyField
필드가 아니어야 합니다.prepopulated_fields[<field name>]
값은 목록 또는 튜플이어야 합니다.prepopulated_fields
값은 ``<model>``의 필드가 아닌 ``<field name>``을 참조합니다.ordering
값은 리스트 또는 튜플이어야 합니다.ordering
값에는 무작위 순서 마커 ``?``가 있지만, 다른 필드도 포함합니다.ordering
값은 <model>
필드가 아닌 ``<field name>``을 나타냅니다.readonly_fields
값은 목록 또는 튜플이어야 합니다.readonly_fields[n]
값은 콜러블, ``<ModelAdmin class>``의 속성 또는 ``<model>``의 속성이 아닙니다.autocomplete_fields
값은 리스트 또는 튜플이어야 합니다.autocomplete_fields[n]
값은 <model>
필드가 아닌 ``<field name>``을 참조합니다.autocomplete_fields[n]
값은 외래 키 또는 다대다 필드여야 합니다.모델 관리자
¶관리 사이트에 등록된 :class:`~django.contrib.admin.ModelAdmin`에서 다음 검사가 수행됩니다:
save_as
값은 부울이어야 합니다.save_on_top
값은 부울이어야 합니다.inlines
값은 리스트 또는 튜플이어야 합니다.<InlineModelAdmin class>``에는 ``model
속성이 있어야 합니다.<InlineModelAdmin class>.model
값은 ``Model``이어야 합니다.list_display
값은 리스트 또는 튜플이어야 합니다.list_display[n]``의 값은 콜러블이 아닌 ``<label>
, 또는 ``<ModelAdmin class>``의 속성 또는 ``<model>``의 속성이나 메서드를 참조합니다.list_display[n]
값은 ManyToManyField
필드가 아니어야 합니다.list_display_links
값은 리스트, 튜플 또는 ``None``이어야 합니다.list_display_links[n]
값은 ``list_display``에 정의되지 않은 ``<label>``을 참조합니다.list_filter
값은 리스트 또는 튜플이어야 합니다.list_filter[n]
must inherit from
ListFilter
.list_filter[n]
must not inherit from
FieldListFilter
.list_filter[n][1]
must inherit from
FieldListFilter
.list_filter[n]
refers to <label>
,
which does not refer to a Field.list_select_related
must be a boolean,
tuple or list.list_per_page
must be an integer.list_max_show_all
must be an integer.list_editable
must be a list or tuple.list_editable[n]
refers to <label>
,
which is not a field of <model>
.list_editable[n]
refers to <label>
,
which is not contained in list_display
.list_editable[n]
cannot be in both
list_editable
and list_display_links
.list_editable[n]
refers to the first field
in list_display
(<label>
), which cannot be used unless
list_display_links
is set.list_editable[n]
refers to <field name>
,
which is not editable through the admin.search_fields
must be a list or tuple.date_hierarchy
refers to <field name>
,
which does not refer to a Field.date_hierarchy
must be a DateField
or
DateTimeField
.<modeladmin>
must define a has_<foo>_permission()
method for the <action>
action.__name__
attributes of actions defined in
<modeladmin>
must be unique. Name <name>
is not unique.InlineModelAdmin
¶The following checks are performed on any
InlineModelAdmin
that is registered as an
inline on a ModelAdmin
.
<field name>
, because it is the
foreign key to the parent model <app_label>.<model>
.<model>
has no ForeignKey
to <parent model>
./
<model>
has more than one ForeignKey
to <parent model>
. You must
specify a fk_name
attribute.extra
must be an integer.max_num
must be an integer.min_num
must be an integer.formset
must inherit from
BaseModelFormSet
.GenericInlineModelAdmin
¶The following checks are performed on any
GenericInlineModelAdmin
that is
registered as an inline on a ModelAdmin
.
'ct_field'
references <label>
, which is not a field
on <model>
.'ct_fk_field'
references <label>
, which is not a
field on <model>
.<model>
has no GenericForeignKey
.<model>
has no GenericForeignKey
using content type
field <field name>
and object ID field <field name>
.AdminSite
¶The following checks are performed on the default
AdminSite
:
django.contrib.contenttypes
must be in
INSTALLED_APPS
in order to use the admin application.django.contrib.auth.context_processors.auth
must be enabled in DjangoTemplates
(TEMPLATES
) if using the default auth backend in order to use the
admin application.django.template.backends.django.DjangoTemplates
instance must be configured in TEMPLATES
in order to use the
admin application.django.contrib.messages.context_processors.messages
must be enabled in DjangoTemplates
(TEMPLATES
) in order to use the admin application.django.contrib.auth
must be in
INSTALLED_APPS
in order to use the admin application.django.contrib.messages
must be in
INSTALLED_APPS
in order to use the admin application.django.contrib.auth.middleware.AuthenticationMiddleware
must be in
MIDDLEWARE
in order to use the admin application.django.contrib.messages.middleware.MessageMiddleware
must be in MIDDLEWARE
in order to use the admin application.django.contrib.sessions.middleware.SessionMiddleware
must be in MIDDLEWARE
in order to use the admin application.django.template.context_processors.request
must be
enabled in DjangoTemplates
(TEMPLATES
) in order to use the admin navigation sidebar.auth
¶REQUIRED_FIELDS
must be a list or tuple.USERNAME_FIELD
for a custom user
model must not be included in REQUIRED_FIELDS
.<field>
must be unique because it is named as the
USERNAME_FIELD
.<field>
is named as the USERNAME_FIELD
, but it is not
unique.<codename>
clashes with a builtin
permission for model <model>
.<codename>
is duplicated for model
<model>
.verbose_name
of model <model>
must be at most
244 characters for its builtin permission names
to be at most 255 characters.<name>
of model <model>
is longer
than 255 characters.<User model>.is_anonymous
must be an attribute or property
rather than a method. Ignoring this is a security issue as anonymous users
will be treated as authenticated!<User model>.is_authenticated
must be an attribute or
property rather than a method. Ignoring this is a security issue as anonymous
users will be treated as authenticated!<model>
must be at most 93 characters
for its builtin permission names to be at most 100 characters.<codename>
of model <model>
is longer than 100 characters.contenttypes
¶The following checks are performed when a model contains a
GenericForeignKey
or
GenericRelation
:
GenericForeignKey
object ID references the
nonexistent field <field>
.GenericForeignKey
content type references the
nonexistent field <field>
.<field>
is not a ForeignKey
.<field>
is not a ForeignKey
to
contenttypes.ContentType
.postgres
¶The following checks are performed on django.contrib.postgres
model
fields:
<field>
default should be a callable instead of an
instance so that it’s not shared between all field instances. This check was
changed to fields.E010
in Django 3.1.sites
¶The following checks are performed on any model using a
CurrentSiteManager
:
CurrentSiteManager
could not find a field named
<field name>
.CurrentSiteManager
cannot use <field>
as it is not a
foreign key or a many-to-many field.The following checks verify that django.contrib.sites
is correctly
configured:
SITE_ID
setting must be an integer.staticfiles
¶The following checks verify that django.contrib.staticfiles
is correctly
configured:
STATICFILES_DIRS
setting is not a tuple
or list.STATICFILES_DIRS
setting should not
contain the STATIC_ROOT
setting.<prefix>
in the
STATICFILES_DIRS
setting must not end with a slash.<directory>
in the
STATICFILES_DIRS
does not exist.12월 04, 2023