시스템 검사 프레임워크는 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
must be a mapping (e.g. a dictionary) or an
iterable (e.g. a list or tuple).choices
must be a mapping of actual values to human
readable names or an iterable containing (actual value, human readable
name)
tuples.db_index``는 ``None
, True
또는 False
중 하나여야 합니다.max_length``가 너무 작아 ``choices``(``<count>
문자)의 가장 긴 값에 맞지 않습니다.<field>
기본값은 모든 필드 인스턴스 간에 공유되지 않도록 인스턴스 대신 콜러블이어야 합니다.<database>
does not support default database values with
expressions (db_default
).<expression>
cannot be used in db_default
.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>
은 열에 대한 설명을 지원하지 않습니다.
(db_comment
).<database>``은 ``JSONField
s를 지원하지 않습니다.<database>``은 ``<field_type>
s에서 데이터베이스 데이터 정렬을 지원하지 않습니다.<database>
does not support GeneratedField
s.<database>
does not support non-persisted
GeneratedField
s.<database>
does not support persisted
GeneratedField
s.GeneratedField.output_field
has errors: …GeneratedField.output_field
has warnings: …django.contrib.postgres.fields.CIEmailField
는 더 이상 사용되지 않습니다. Django 5.1에서는 이에 대한 지원(이전 마이그레이션을 제외하고) 이 제거될 예정입니다.django.contrib.postgres.fields.CITextField
는 더 이상 사용되지 않습니다. 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>
는 테이블에 대한 설명을 지원하지 않습니다.(db_table_comment
).<database>
does not support unique constraints with
nulls distinct.보안 검사는 사이트를 안전하게 만들지 않습니다. 코드를 감사하거나, 침입 탐지를 수행하거나, 특히 복잡한 작업을 수행하지 않습니다. 오히려, 사이트의 보안을 개선하는 데 도움이 될 수 있는 자동화된 간단한 체크리스트를 수행하는 데 도움이 됩니다.
이러한 검사 중 일부는 특정 배포 구성에 적합하지 않을 수 있습니다. 예를 들어 로드 밸런서에서 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()``를 전달하십시오.<pattern>
has an unmatched
<angle bracket>
.관리자
¶관리 검사는 모두 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]/filter_horizontal[n]/filter_vertical[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]
refers to
<field_name>
, which is not a callable, an attribute of
<ModelAdmin class>
, or an attribute of <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]
must not be a many-to-many
field or a reverse foreign key.list_display_links
값은 리스트, 튜플 또는 ``None``이어야 합니다.list_display_links[n]
값은 ``list_display``에 정의되지 않은 ``<label>``을 참조합니다.list_filter
값은 리스트 또는 튜플이어야 합니다.list_filter[n]
의 값은 필드를 참조하지 않는 ``<label>``을 참조합니다.list_editable[n]``의 값은 ``list_editable``과 ``list_display_links
모두에 있을 수 없습니다.list_editable[n]``의 값은 ``list_display
(<label>
)의 첫 번째 필드를 참조하며, ``list_display_links``를 설정하지 않으면 사용할 수 없습니다.date_hierarchy``의 값은 ``DateField
혹은 ``DateTimeField``여야한다.InlineModelAdmin
¶다음 검사는 :class:`~django.contrib.admin.ModelAdmin`에 인라인으로 등록된 모든 :class:`~django.contrib.admin.InlineModelAdmin`에 대해 수행됩니다.
<model>
has no ForeignKey
to <parent model>
./
<model>
has more than one ForeignKey
to <parent model>
. You must
specify a fk_name
attribute.GenericInlineModelAdmin
¶다음 검사는 :class:`~django.contrib.admin.ModelAdmin`에 인라인으로 등록된 모든 :class:`~django.contrib.contenttypes.admin.GenericInlineModelAdmin`에 대해 수행됩니다.
AdminSite
¶디폴트 AdminSite
:에 대해 다음 검사가 수행됩니다.
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
¶<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
¶모델에 GenericForeignKey
또는 GenericRelation
:가 포함된 경우 다음 검사가 수행됩니다.
GenericForeignKey
객체 ID는 존재하지 않는 필드``<field>``을 참조합니다.GenericForeignKey
내용 유형은 존재하지 않는 필드 ``<field>``을 참조합니다.postgres
¶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
¶다음 점검은 CurrentSiteManager
:를 사용하여 모든 모델에서 수행됩니다.
다음 검사를 통해 :mod:`django.contrib.sites`가 확인됩니다.
SITE_ID
설정은 정수여야 합니다.staticfiles
¶다음 검사를 통해 :mod:`django.contrib.staticfiles`가 올바르게 구성되어 있는지 확인합니다:
STATICFILES_DIRS
설정에는 :setting:`STATIC_ROOT`설정이 포함되지 않아야 합니다.STATICFILES_DIRS
설정의 접두사 ``<prefix>``은 슬래시로 끝날 수 없습니다.STORAGES
setting must define a
staticfiles
storage.5월 04, 2024