系统检查框架是一组用于验证Django项目的静态检查。它检测常见问题并提供如何修复这些问题的提示。框架是可扩展的,因此您可以轻松地添加自己的检查。
有关如何添加自己的检查并将其与Django的系统检查集成的详细信息,请参见 System check topic guide .
CheckMessage
¶系统检查引发的警告和错误必须是 CheckMessage
. 实例封装单个可报告的错误或警告。它还提供适用于消息的上下文和提示,以及用于筛选目的的唯一标识符。
构造函数参数是:
level
消息的严重性。使用一个预定义值: DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
. 如果水平大于或等于 ERROR
,则django将阻止执行管理命令。级别低于的邮件 ERROR
(即警告)向控制台报告,但可以静音。
msg
描述问题的短(少于80个字符)字符串。字符串应该 not 包含换行符。
hint
提供修复问题提示的单行字符串。如果无法提供提示,或者提示从错误消息中是自明的,则可以省略提示,或者值为 None
可以使用。
obj
可选的。为消息提供上下文的对象(例如,发现问题的模型)。对象应该是模型、字段或管理器或定义 __str__()
方法。该方法在报告所有消息时使用,其结果在消息之前。
id
可选字符串。问题的唯一标识符。标识符应该遵循模式 applabel.X001
在哪里 X
是其中一封信 CEWID
,指示消息严重性 (C
对于批评, E
错误等等)。该编号可以由应用程序分配,但在该应用程序中应该是唯一的。
有一些子类可以使创建具有公共级别的消息更加容易。使用时,可以省略 level
参数,因为它是由类名隐含的。
以下检查验证您的设置 异步支持 :
async.E001 :您不应该设置 DJANGO_ALLOW_ASYNC_UNSAFE
部署中的环境变量。这将禁用 async safety protection 。
兼容性检查警告升级django后可能出现的潜在问题。
2_0.W001 :您的URL模式 <pattern>
有一个 route
包含 (?P<
从A开始 ^
或以 $
. 这很可能是移民时的疏忽。 url()
到 path()
.
4_0.E001 :从Django 4.0开始, CSRF_TRUSTED_ORIGINS
设置必须以方案开始(通常 http://
或 https://
),但发现 <hostname>
。
以下检查确认 CACHES
设置配置正确:
caches.E001 :必须定义 'default'
缓存在您的 CACHES
设置。
caches.W002 :您的 <cache>
配置可能会暴露您的缓存或导致数据损坏,因为它 LOCATION
matches/is inside/contains MEDIA_ROOT
/STATIC_ROOT
/:设置:' CATICFILES_DIRS '。
caches.W003 :您的 <cache>
缓存 LOCATION
是相对的。改用绝对路径。
如果您使用的是SQL或MariaDB,则将执行以下检查:
mysql.E001: MySQL/MariaDB does not allow unique CharField
s to have a
max_length
> 255. This check was changed to mysql.W003
in Django
3.1 as the real maximum size depends on many factors.
mysql.W002 :未为数据库连接设置SQL/MariaDB严格模式 <alias>
。另请参阅 设置 sql_mode 。
mysql.W003 :SQL/MariaDB可能不允许唯一 CharField
S要有一个 max_length
>255。
以下检查验证您的设置 文档管理 :
files.E001 : FILE_UPLOAD_TEMP_DIR
设置引用不存在的目录 <path>
。
fields.E001 :字段名不能以下划线结尾。
fields.E002 :字段名不能包含 "__"
.
fields.E003 : pk
是不能用作字段名的保留字。
fields.E004 : choices
必须是映射(例如字典)或可迭代的(例如列表或元组)。
fields.E005 : choices
必须是实际值到人类可读名称的映射或包含 (actual value, human readable name)
元组。
fields.E006 : db_index
必须是 None
, True
或 False
.
fields.E007 :主键不能有 null=True
.
fields.E008 都 validators
必须是可调用的。
fields.E009: max_length
is too small to fit the longest value in
choices
(<count>
characters).
fields.E010 : <field>
默认设置应该是可调用的,而不是实例,这样它就不会在所有字段实例之间共享。
fields.E011 : <database>
不支持使用表达式的默认数据库值 (db_default
)。
fields.E012 : <expression>
不能用于 db_default
。
fields.E100 : AutoField
s必须设置primary_key=true。
fields.E110 : BooleanField
s不接受空值。 此检查在Django 2.1中添加对空值的支持之前出现。
fields.E120 : CharField
s必须定义 max_length
属性。
fields.E121 : max_length
必须是正整数。
fields.W122 : max_length
与一起使用时被忽略 <integer field type>
.
fields.E130 : DecimalField
s必须定义 decimal_places
属性。
fields.E131 : decimal_places
必须是非负整数。
fields.E132 : DecimalField
s必须定义 max_digits
属性。
fields.E133 : max_digits
必须是正整数。
fields.E134 : max_digits
必须大于或等于 decimal_places
.
fields.E140 : FilePathField
S必须有 allow_files
或 allow_folders
设置为真。
fields.E150 : GenericIPAddressField
S不可能有 blank=True
如果 null=False
,因为空值存储为空值。
fields.E160 选项 auto_now
, auto_now_add
和 default
相互排斥。这些选项中只能有一个存在。
fields.W161 :提供固定默认值。
fields.W162 : <database>
不支持上的数据库索引 <field data type>
柱。
fields.W163 : <database>
不支持列上的注释 (db_comment
)。
fields.E170 : BinaryField
张氏 default
不能是字符串。改用字节内容。
fields.E180 : <database>
不支持 JSONField
S。
fields.E190 : <database>
不支持数据库排序规则 <field_type>
S。
fields.E220 : <database>
不支持 GeneratedField
S。
fields.E221 : <database>
不支持非持久化 GeneratedField
S。
fields.E222 : <database>
不支持持久保存 GeneratedField
S。
fields.E223 : GeneratedField.output_field
有错误:...
fields.W224 : GeneratedField.output_field
有警告:...
fields.E900 : IPAddressField
已删除,但历史迁移中的支持除外。
fields.W900 : IPAddressField
已弃用。将在Django 1.9中删除对它的支持(历史迁移除外)。 这张支票出现在Django 1.7和1.8中。 .
fields.W901 : CommaSeparatedIntegerField
已弃用。将在Django 2.0中删除对它的支持(历史迁移除外)。 这张支票出现在Django 1.10和1.11中。 .
fields.E901 : CommaSeparatedIntegerField
已删除,但在历史迁移中支持除外。
fields.W902 : FloatRangeField
已被弃用并将在Django 3.1中删除。 This check appeared in Django 2.2 and 3.0 。
fields.W903 : NullBooleanField
已被废弃。Django 4.0将删除对其的支持(历史迁移除外)。 This check appeared in Django 3.1 and 3.2 。
fields.E903 : NullBooleanField
已删除,但在历史迁移中的支持除外。
fields.W904 : django.contrib.postgres.fields.JSONField
已被废弃。Django 4.0将删除对其的支持(历史迁移除外)。 This check appeared in Django 3.1 and 3.2 。
fields.E904 : django.contrib.postgres.fields.JSONField
已删除,但在历史迁移中的支持除外。
fields.W905 : django.contrib.postgres.fields.CICharField
已弃用。Django 5.1将删除对它的支持(历史迁移除外)。 This check appeared in Django 4.2 and 5.0 。
fields.E905 : django.contrib.postgres.fields.CICharField
已删除,但在历史迁移中的支持除外。
fields.W906 : django.contrib.postgres.fields.CIEmailField
已弃用。Django 5.1将删除对它的支持(历史迁移除外)。 This check appeared in Django 4.2 and 5.0 。
fields.E906 : django.contrib.postgres.fields.CIEmailField
已删除,但在历史迁移中的支持除外。
fields.W907 : django.contrib.postgres.fields.CITextField
已弃用。Django 5.1将删除对它的支持(历史迁移除外)。 This check appeared in Django 4.2 and 5.0 。
fields.E907 : django.contrib.postgres.fields.CITextField
将被删除,但支持历史迁移除外。
fields.E200 : unique
不是的有效参数 FileField
. 此支票已在Django 1.11中删除。 .
fields.E201 : primary_key
不是的有效参数 FileField
.
fields.E202 : FileField
的 upload_to
参数必须是相对路径,而不是绝对路径。
fields.E210 不能使用 ImageField
因为枕头没有安装。
models.E001 : <swappable>
不符合形式 app_label.app_name
.
models.E002 : <SETTING>
参考文献 <model>
,尚未安装,或是抽象的。
models.E003 :模型通过中间模型具有两个相同的多对多关系 <app_label>.<model>
.
models.E004 : id
如果字段也设置了 primary_key=True
.
models.E005 田野 <field name>
从父模型 <model>
与现场冲突 <field name>
从父模型 <model>
.
models.E006 :田野 <field name>
与场上的冲突 <field name>
从模型 <model>
。
models.E007 领域 <field name>
有列名 <column name>
它被另一个字段使用。
models.E008 : index_together
必须是列表或元组。 This check appeared before Django 5.1.
models.E009 :全部 index_together
元素必须是列表或元组。 This check appeared before Django 5.1.
models.E010 : unique_together
必须是列表或元组。
models.E011 都 unique_together
元素必须是列表或元组。
models.E012 : constraints/indexes/unique_together
指的是不存在的字段 <field name>
。
models.E013 : constraints/indexes/unique_together
指的是 ManyToManyField
<field name>
,但 ManyToManyField
S不支持该选项。
models.E014 : ordering
必须是元组或列表(即使您只希望按一个字段排序)。
models.E015 : ordering
指不存在的字段、相关字段或查找 <field name>
。
models.E016 : constraints/indexes/unique_together
指的是字段 <field_name>
它不是模型的本地 <model>
。
models.E017 代理模型 <model>
包含模型字段。
models.E018 :自动生成的列名对于字段太长 <field>
. 最大长度为 <maximum length>
对于数据库 <alias>
.
models.E019 :自动生成的列名对于M2M字段太长 <M2M field>
. 最大长度为 <maximum length>
对于数据库 <alias>
.
models.E020 : <model>.check()
类方法当前被重写。
models.E021 : ordering
和 order_with_respect_to
不能一起使用。
models.E022 : <function>
包含对的延迟引用 <app label>.<model>
但是应用程序 <app label>
未安装或不提供型号 <model>
.
models.E023 :型号名称 <model>
不能以下划线开头或结尾,因为它与查询查找语法冲突。
models.E024 :型号名称 <model>
不能包含双下划线,因为它与查询查找语法冲突。
models.E025 财产 <property name>
与相关的字段访问器冲突。
models.E026 :模型不能有多个字段 primary_key=True
.
models.W027 : <database>
不支持检查约束。
models.E028 : db_table
<db_table>
用于多个模型: <model list>
.
models.E029 :索引名称 <index>
并非模特独有 <model>
。
models.E030 :索引名称 <index>
在模特中并不独特: <model list>
。
models.E031 :约束名称 <constraint>
并非模特独有 <model>
。
models.E032 :约束名称 <constraint>
在模特中并不独特: <model list>
。
models.E033 :索引名称 <index>
不能以强调线或数字开头。
models.E034 :索引名称 <index>
不能超过 <max_length>
人物。
models.W035 : db_table
<db_table>
被多个型号使用: <model list>
。
models.W036 : <database>
不支持带条件的独特约束。
models.W037 : <database>
不支持有条件的指数。
models.W038 : <database>
不支持可推迟的唯一约束。
models.W039 : <database>
不支持对非键列的唯一约束。
models.W040 : <database>
不支持具有非键列的索引。
models.E041 : constraints
指已加入的字段 <field name>
。
models.W042 :默认情况下,未定义主密钥类型时使用自动创建的主密钥 django.db.models.AutoField
。
models.W043 : <database>
不支持对表达进行索引。
models.W044 : <database>
不支持对表达式的唯一约束。
models.W045 :检查约束 <constraint>
含 RawSQL()
表达式,并且不会在建模过程中进行验证 full_clean()
。
models.W046 : <database>
不支持对表进行注释 (db_table_comment
)。
models.W047 : <database>
不支持空值为DISTINCT的唯一约束。
安全检查并不能保证您的网站安全。他们不审核代码、进行入侵检测或执行任何特别复杂的事情。相反,它们有助于执行自动化的、容易挂起的检查表,这可以帮助您提高网站的安全性。
其中一些检查可能不适合您的特定部署配置。例如,如果您在负载均衡器中执行HTTP到HTTPS重定向,则不断收到关于未启用的警告会很恼人。 SECURE_SSL_REDIRECT
. 使用 SILENCED_SYSTEM_CHECKS
停止不必要的检查。
如果使用 check --deploy
选项:
security.W001 :你没有 django.middleware.security.SecurityMiddleware
在你的 MIDDLEWARE
因此, SECURE_HSTS_SECONDS
, SECURE_CONTENT_TYPE_NOSNIFF
, SECURE_REFERRER_POLICY
, SECURE_CROSS_ORIGIN_OPENER_POLICY
,以及 SECURE_SSL_REDIRECT
设置将不起作用。
security.W002 :你没有 django.middleware.clickjacking.XFrameOptionsMiddleware
在你 MIDDLEWARE
,因此您的页面将不会与 'x-frame-options'
标题。除非有充分的理由在框架中为您的站点提供服务,否则您应该考虑启用此头部以帮助防止点击劫持攻击。
security.W003 :您似乎没有通过中间件使用Django内置的跨站点请求伪造保护。 (django.middleware.csrf.CsrfViewMiddleware
不在你的身边 MIDDLEWARE
)启用中间件是确保不会留下任何漏洞的最安全方法。
security.W004 :尚未设置 SECURE_HSTS_SECONDS
设置。如果整个站点仅通过SSL提供服务,那么您可能需要考虑设置一个值并启用 HTTP Strict Transport Security . 一定要先阅读文档;不小心启用HST会导致严重的、不可逆转的问题。
security.W005 :您尚未设置 SECURE_HSTS_INCLUDE_SUBDOMAINS
设置为 True
. 如果不这样做,您的站点可能容易受到通过与子域的不安全连接进行的攻击。只将此设置为 True
如果您确定您的域的所有子域都应该通过SSL以独占方式提供服务。
security.W006 你的 SECURE_CONTENT_TYPE_NOSNIFF
设置未设置为 True
,因此您的页面将不会与 'X-Content-Type-Options: nosniff'
标题。您应该考虑启用此标题,以防止浏览器错误地识别内容类型。
security.W007: Your SECURE_BROWSER_XSS_FILTER
setting is not
set to True
, so your pages will not be served with an
'X-XSS-Protection: 1; mode=block'
header. You should consider enabling
this header to activate the browser's XSS filtering and help prevent XSS
attacks. This check is removed in Django 3.0 as the X-XSS-Protection
header is no longer honored by modern browsers.
security.W008 你的 SECURE_SSL_REDIRECT
设置未设置为 True
. 除非您的站点可以同时通过SSL和非SSL连接使用,否则您可能希望将此设置设置为 True
或者配置负载均衡器或反向代理服务器,将所有连接重定向到HTTPS。
security.W009 :您的 SECRET_KEY
少于50个字符,少于5个唯一字符,或者前缀为 'django-insecure-'
表明它是由Django自动生成的。请生成一个长的随机值,否则Django的许多安全关键功能将容易受到攻击。
security.W010 你有 django.contrib.sessions
在你 INSTALLED_APPS
但你还没准备好 SESSION_COOKIE_SECURE
到 True
. 使用仅安全会话cookie使网络流量嗅探器更难劫持用户会话。
security.W011 你有 django.contrib.sessions.middleware.SessionMiddleware
在你 MIDDLEWARE
,但你还没有设置 SESSION_COOKIE_SECURE
到 True
. 使用仅安全会话cookie使网络流量嗅探器更难劫持用户会话。
security.W012 : SESSION_COOKIE_SECURE
未设置为 True
. 使用仅安全会话cookie使网络流量嗅探器更难劫持用户会话。
security.W013 你有 django.contrib.sessions
在你 INSTALLED_APPS
,但你还没有设置 SESSION_COOKIE_HTTPONLY
到 True
. 使用一个 HttpOnly
会话cookie使得跨站点脚本攻击劫持用户会话更加困难。
security.W014 你有 django.contrib.sessions.middleware.SessionMiddleware
在你 MIDDLEWARE
,但你还没有设置 SESSION_COOKIE_HTTPONLY
到 True
. 使用一个 HttpOnly
会话cookie使得跨站点脚本攻击劫持用户会话更加困难。
security.W015 : SESSION_COOKIE_HTTPONLY
未设置为 True
. 使用一个 HttpOnly
会话cookie使得跨站点脚本攻击劫持用户会话更加困难。
security.W016 : CSRF_COOKIE_SECURE
未设置为 True
. 使用仅安全的CSRF cookie使网络流量嗅探器更难窃取CSRF令牌。
security.W017: CSRF_COOKIE_HTTPONLY
is not set to True
.
Using an HttpOnly
CSRF cookie makes it more difficult for cross-site
scripting attacks to steal the CSRF token. This check is removed in Django
1.11 as the CSRF_COOKIE_HTTPONLY
setting offers no practical
benefit.
security.W018 :你不应该 DEBUG
设置为 True
部署中。
security.W019 :你有 django.middleware.clickjacking.XFrameOptionsMiddleware
在你的 MIDDLEWARE
,但 X_FRAME_OPTIONS
未设置为 'DENY'
.除非您的网站有充分的理由在框架中提供其本身的其他部分,否则您应该将其更改为 'DENY'
。
security.W020 : ALLOWED_HOSTS
部署中不能为空。
security.W021 :您尚未设置 SECURE_HSTS_PRELOAD
设置为 True
. 如果不这样做,您的网站将无法提交到浏览器预加载列表。
security.W022 :您尚未设置 SECURE_REFERRER_POLICY
设置.如果没有此,您的网站将不会发送推荐政策标头。您应该考虑启用此标头以保护用户隐私。
security.E023 :您已经设置了 SECURE_REFERRER_POLICY
设置为无效值。
security.E024 :您已经设置了 SECURE_CROSS_ORIGIN_OPENER_POLICY
设置为无效值。
security.W025 :您的 SECRET_KEY_FALLBACKS[n]
少于50个字符,少于5个唯一字符,或者前缀为 'django-insecure-'
表明它是由Django自动生成的。请生成一个长的随机值,否则Django的许多安全关键功能将容易受到攻击。
以下检查验证您的安全相关设置是否正确配置:
security.E100 : DEFAULT_HASHING_ALGORITHM
一定是 'sha1'
或 'sha256'
。 This check appeared in Django 3.1 and 3.2 。
security.E101 :CSRF失败观点 'path.to.view'
不采用正确的参数数量。
security.E102 :CSRF失败观点 'path.to.view'
无法进口。
signals.E001 : <handler>
连接到 <signal>
对发送方具有延迟引用的信号 <app label>.<model>
但是应用程序 <app label>
未安装或不提供型号 <model>
.
以下检查确认 TEMPLATES
设置配置正确:
templates.E001: You have 'APP_DIRS': True
in your
TEMPLATES
but also specify 'loaders'
in OPTIONS
. Either
remove APP_DIRS
or remove the 'loaders'
option. This check is
removed in Django 5.1 as system checks may now raise
ImproperlyConfigured
instead.
templates.E002 : string_if_invalid
在里面 TEMPLATES
OPTIONS
必须是字符串,但得到: {{value}}
({{type}}
)
templates.E003:<name>
is used for multiple template tag modules:
<module list>
. This check was changed to templates.W003
in Django
4.1.2.
templates.W003 :<name>``用于多个模板标签模块: ``<module list>
。
对您的翻译配置执行以下检查:
translation.E001 :您为 LANGUAGE_CODE
设置: <value>
。
translation.E002 :您在中提供了无效的语言代码 LANGUAGES
设置: <value>
。
translation.E003 :您在中提供了无效的语言代码 LANGUAGES_BIDI
设置: <value>
。
translation.E004 :您为 LANGUAGE_CODE
不在 LANGUAGES
布景。
对URL配置执行以下检查:
urls.W001 :您的URL模式 <pattern>
使用 include()
用一个 route
以A结尾 $
. 把美元从 route
以避免URL等问题。
urls.W002 :您的URL模式 <pattern>
has a route
beginning with a /
. Remove this slash as it is unnecessary. If this pattern is targeted in an include()
, ensure the include()
pattern has a trailing `` ''.
urls.W003 :您的URL模式 <pattern>
有一个 name
包括一个 :
. 删除冒号,以避免不明确的命名空间引用。
urls.E004 :您的URL模式 <pattern>
无效。确保 urlpatterns
是一个列表 path()
和/或 re_path()
实例。
urls.W005 URL命名空间 <namespace>
不是唯一的。您可能无法反转此命名空间中的所有URL。
urls.E006 : MEDIA_URL
/ STATIC_URL
设置必须以斜线结尾。
urls.E007 习俗 handlerXXX
看法 'path.to.view'
参数数目不正确(…)。
urls.E008 习俗 handlerXXX
看法 'path.to.view'
无法导入。
urls.E009 :您的URL模式 <pattern>
具有无效的视图,PASS <view>.as_view()
而不是 <view>
。
urls.W010 :您的URL模式 <pattern>
拥有无与伦比的 <angle bracket>
。
contrib
应用程序检查¶admin
¶管理检查都是 admin
标签。
对任何 ModelAdmin
(或子类)在管理站点注册的:
admin.E001 的价值 raw_id_fields
必须是列表或元组。
admin.E002 :的价值 raw_id_fields[n]
指 <field name>
,这不是一个领域 <model>
。
admin.E003 的价值 raw_id_fields[n]
必须是外键或多对多字段。
admin.E004 的价值 fields
必须是列表或元组。
admin.E005 都是 fieldsets
和 fields
指定。
admin.E006 的价值 fields
包含重复字段。
admin.E007 的价值 fieldsets
必须是列表或元组。
admin.E008 的价值 fieldsets[n]
必须是列表或元组。
admin.E009 的价值 fieldsets[n]
长度必须为2。
admin.E010 的价值 fieldsets[n][1]
一定是一本字典。
admin.E011 的价值 fieldsets[n][1]
必须包含密钥 fields
.
admin.E012 :中有重复字段 fieldsets[n][1]
.
admin.E013 :的价值 fields[n]/filter_horizontal[n]/filter_vertical[n]/fieldsets[n][m]
不能包含 ManyToManyField
<field name>
,因为该字段手动指定关系模型。
admin.E014 的价值 exclude
必须是列表或元组。
admin.E015 的价值 exclude
包含重复字段。
admin.E016 的价值 form
必须从继承 BaseModelForm
.
admin.E017 的价值 filter_vertical
必须是列表或元组。
admin.E018 的价值 filter_horizontal
必须是列表或元组。
admin.E019 :的价值 filter_vertical[n]/filter_horizontal[n]
指 <field name>
,这不是一个领域 <model>
。
admin.E020 :的价值 filter_vertical[n]/filter_horizontal[n]
必须是一个多对多领域。
admin.E021 的价值 radio_fields
一定是一本字典。
admin.E022 :的价值 radio_fields
指 <field name>
,这不是一个领域 <model>
。
admin.E023 :的价值 radio_fields
指 <field name>
,它不是 ForeignKey
,并且没有 choices
定义。
admin.E024 的价值 radio_fields[<field name>]
必须是 admin.HORIZONTAL
或 admin.VERTICAL
.
admin.E025 的价值 view_on_site
必须是可调用值或布尔值。
admin.E026 的价值 prepopulated_fields
一定是一本字典。
admin.E027 :的价值 prepopulated_fields
指 <field name>
,这不是一个领域 <model>
。
admin.E028 的价值 prepopulated_fields
指 <field name>
,不能是 DateTimeField
,A ForeignKey
,A OneToOneField
,或者 ManyToManyField
字段。
admin.E029 的价值 prepopulated_fields[<field name>]
必须是列表或元组。
admin.E030 :的价值 prepopulated_fields
指 <field name>
,这不是一个领域 <model>
。
admin.E031 的价值 ordering
必须是列表或元组。
admin.E032 的价值 ordering
具有随机排序标记 ?
,但也包含其他字段。
admin.E033 :的价值 ordering
指 <field name>
,这不是一个领域 <model>
。
admin.E034 的价值 readonly_fields
必须是列表或元组。
admin.E035 :的价值 readonly_fields[n]
指 <field_name>
,它不是可调用的,它是 <ModelAdmin class>
,或一个属性 <model>
。
admin.E036 的价值 autocomplete_fields
必须是列表或元组。
admin.E037 :的价值 autocomplete_fields[n]
指 <field name>
,这不是一个领域 <model>
。
admin.E038 的价值 autocomplete_fields[n]
必须是外键或多对多字段。
admin.E039 :模型管理员 <model>
必须注册才能被引用 <modeladmin>.autocomplete_fields
.
admin.E040 : <modeladmin>
必须定义 search_fields
,因为它被引用 <other_modeladmin>.autocomplete_fields
.
ModelAdmin
¶对任何 ModelAdmin
在管理站点注册的:
admin.E101 的价值 save_as
必须是布尔值。
admin.E102 的价值 save_on_top
必须是布尔值。
admin.E103 的价值 inlines
必须是列表或元组。
admin.E104 : <InlineModelAdmin class>
必须从继承 InlineModelAdmin
.
admin.E105 : <InlineModelAdmin class>
必须有 model
属性。
admin.E106 的价值 <InlineModelAdmin class>.model
必须是 Model
.
admin.E107 的价值 list_display
必须是列表或元组。
admin.E108 :的价值 list_display[n]
指 <label>
,这不是的可调用或属性 <ModelAdmin class>
,或上的属性、方法或字段 <model>
。
admin.E109 :的价值 list_display[n]
不能是多对多字段或反向外键。
admin.E110 的价值 list_display_links
必须是列表、元组或 None
.
admin.E111 的价值 list_display_links[n]
指 <label>
,未在中定义 list_display
.
admin.E112 的价值 list_filter
必须是列表或元组。
admin.E113 的价值 list_filter[n]
必须从继承 ListFilter
.
admin.E114 的价值 list_filter[n]
不能从继承 FieldListFilter
.
admin.E115 的价值 list_filter[n][1]
必须从继承 FieldListFilter
.
admin.E116 的价值 list_filter[n]
指 <label>
,不引用字段。
admin.E117 的价值 list_select_related
必须是布尔值、元组或列表。
admin.E118 的价值 list_per_page
必须是整数。
admin.E119 的价值 list_max_show_all
必须是整数。
admin.E120 的价值 list_editable
必须是列表或元组。
admin.E121 :的价值 list_editable[n]
指 <label>
,这不是一个领域 <model>
。
admin.E122 的价值 list_editable[n]
指 <label>
,不包含在 list_display
.
admin.E123 的价值 list_editable[n]
不能同时在两者中 list_editable
和 list_display_links
.
admin.E124 的价值 list_editable[n]
引用中的第一个字段 list_display
(<label>
,除非 list_display_links
被设置。
admin.E125 的价值 list_editable[n]
指 <field name>
,不能通过管理员编辑。
admin.E126 的价值 search_fields
必须是列表或元组。
admin.E127 的价值 date_hierarchy
指 <field name>
,不引用字段。
admin.E128 的价值 date_hierarchy
必须是 DateField
或 DateTimeField
.
admin.E129 : <modeladmin>
必须定义一个 has_<foo>_permission()
方法 <action>
行动。
admin.E130 : __name__
中定义的动作属性 <modeladmin>
必须是独一无二的。名称 <name>
并不独特。
InlineModelAdmin
¶对任何 InlineModelAdmin
在上注册为内联的 ModelAdmin
.
admin.E201 :无法排除字段 <field name>
,因为它是父模型的外键 <app_label>.<model>
.
admin.E202 : <model>
没有 ForeignKey
至 <parent model>
./ <model>
具有多于一个 ForeignKey
至 <parent model>
.您必须指定一个 fk_name
属性。
admin.E203 的价值 extra
必须是整数。
admin.E204 的价值 max_num
必须是整数。
admin.E205 的价值 min_num
必须是整数。
admin.E206 的价值 formset
必须从继承 BaseModelFormSet
.
GenericInlineModelAdmin
¶对任何 GenericInlineModelAdmin
在上注册为内联的 ModelAdmin
.
admin.E301 : 'ct_field'
参考文献 <label>
,它不是上的字段 <model>
.
admin.E302 : 'ct_fk_field'
参考文献 <label>
,它不是上的字段 <model>
.
admin.E303 : <model>
没有 GenericForeignKey
.
admin.E304 : <model>
没有 GenericForeignKey
使用内容类型字段 <field name>
和对象ID字段 <field name>
.
AdminSite
¶对默认值执行以下检查 AdminSite
:
admin.E401 : django.contrib.contenttypes
必须在 INSTALLED_APPS
以便使用管理应用程序。
admin.E402 : django.contrib.auth.context_processors.auth
必须在中启用 DjangoTemplates
(TEMPLATES
)如果使用默认的auth后端以使用admin应用程序。
admin.E403 答: django.template.backends.django.DjangoTemplates
必须在中配置实例 TEMPLATES
以便使用管理应用程序。
admin.E404 : django.contrib.messages.context_processors.messages
必须在中启用 DjangoTemplates
(TEMPLATES
)以便使用管理应用程序。
admin.E405 : django.contrib.auth
必须在 INSTALLED_APPS
以便使用管理应用程序。
admin.E406 : django.contrib.messages
必须在 INSTALLED_APPS
以便使用管理应用程序。
admin.E408 : django.contrib.auth.middleware.AuthenticationMiddleware
必须在 MIDDLEWARE
以便使用管理应用程序。
admin.E409 : django.contrib.messages.middleware.MessageMiddleware
必须在 MIDDLEWARE
以便使用管理应用程序。
admin.E410 : django.contrib.sessions.middleware.SessionMiddleware
必须在 MIDDLEWARE
以便使用管理应用程序。
admin.W411: django.template.context_processors.request
must be
enabled in DjangoTemplates
(TEMPLATES
) in order to use the admin navigation sidebar.
auth
¶auth.E001 : REQUIRED_FIELDS
必须是列表或元组。
auth.E002 :名为的字段 USERNAME_FIELD
对于自定义用户模型,不能包含在 REQUIRED_FIELDS
.
auth.E003 : <field>
必须是唯一的,因为它被命名为 USERNAME_FIELD
.
auth.W004 : <field>
被命名为 USERNAME_FIELD
但是它不是唯一的。
auth.E005 :名为的权限代码 <codename>
与模型的内置权限冲突 <model>
.
auth.E006 :名为的权限代码 <codename>
为模型复制 <model>
.
auth.E007 : verbose_name
模型的 <model>
其内置权限名称最多必须为244个字符,最多只能为255个字符。
auth.E008 :名为的权限 <name>
模型的 <model>
超过255个字符。
auth.C009 : <User model>.is_anonymous
必须是属性或属性而不是方法。忽略这是一个安全问题,因为匿名用户将被视为经过身份验证的用户!
auth.C010 : <User model>.is_authenticated
必须是属性或属性而不是方法。忽略这是一个安全问题,因为匿名用户将被视为经过身份验证的用户!
auth.E011 :模特名称 <model>
其内置权限名称最多为100个字符,必须最多为93个字符。
auth.E012 :代号为许可 <codename>
模型 <model>
超过100个字符。
auth.E013 :为了使用 django.contrib.auth.middleware.LoginRequiredMiddleware
, django.contrib.auth.middleware.AuthenticationMiddleware
必须在MIDDLEWARE中之前定义。
contenttypes
¶当模型包含 GenericForeignKey
或 GenericRelation
:
contenttypes.E001 : GenericForeignKey
对象ID引用不存在的字段 <field>
.
contenttypes.E002 : GenericForeignKey
内容类型引用了不存在的字段 <field>
.
contenttypes.E003 : <field>
不是一个 ForeignKey
.
contenttypes.E004 : <field>
不是一个 ForeignKey
到 contenttypes.ContentType
.
contenttypes.E005 :模型名称不能超过100个字符。
postgres
¶在上执行以下检查 django.contrib.postgres
模型字段:
postgres.E001 :数组的基字段有错误:…
postgres.E002 :数组的基字段不能是相关字段。
postgres.E003: <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.
postgres.W004 :数组的基本字段有警告:...
sites
¶对任何使用 CurrentSiteManager
:
sites.E001 : CurrentSiteManager
找不到名为的字段 <field name>
.
sites.E002 : CurrentSiteManager
不能使用 <field>
因为它不是一个外键或多对多字段。
以下检查验证 django.contrib.sites
配置正确:
sites.E101 : SITE_ID
设置必须是一个integer。
staticfiles
¶以下检查证实 django.contrib.staticfiles
配置正确:
staticfiles.E001 : STATICFILES_DIRS
设置不是元组或列表。
staticfiles.E002 : STATICFILES_DIRS
设置不应包含 STATIC_ROOT
设置。
staticfiles.E003 前缀 <prefix>
在 STATICFILES_DIRS
设置不能以斜线结尾。
staticfiles.W004 :目录 <directory>
在 STATICFILES_DIRS
并不存在。
staticfiles.E005 : STORAGES
设置必须定义 staticfiles
储藏室。
7月 22, 2024