系统检查框架是一组用于验证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 CharFields 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.E013 : CompositePrimaryKey 必须命名为 pk .
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.E042 : <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的唯一约束。
models.E048 : constraints/indexes/unique_together 是指 CompositePrimaryKey <field name> ,但是 CompositePrimaryKey 该选项不支持s。
以下检查验证自定义管理命令是否正确配置:
commands.E001 :The migrate 和 makemigrations 命令必须相同 autodetector .
安全检查并不能保证您的网站安全。他们不审核代码、进行入侵检测或执行任何特别复杂的事情。相反,它们有助于执行自动化的、容易挂起的检查表,这可以帮助您提高网站的安全性。
其中一些检查可能不适合您的特定部署配置。例如,如果您在负载均衡器中执行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 储藏室。
5月 28, 2025