django系统报错解释
系统检查框架
系统检查框架是一组用于验证Django项目的静态检查。它可以检测常见问题并提供有关如何解决这些问题的提示。该框架是可扩展的,因此您可以轻松添加自己的检查。
有关如何添加自己的检查并将它们与Django的系统检查集成的详细信息,请参阅系统检查主题指南。
API参考¶
CheckMessage
¶
系统检查引发的警告和错误必须是实例 CheckMessage
。实例封装了单个可报告的错误或警告。它还提供适用于消息的上下文和提示,以及用于过滤目的的唯一标识符。
构造函数参数是:
level
- 消息的严重性。使用预定义值之一:
DEBUG
,INFO
,WARNING
,ERROR
,CRITICAL
。如果级别大于或等于ERROR
,则Django将阻止执行管理命令。级别低于ERROR
(即警告)的消息将报告给控制台,但可以静音。 msg
- 描述问题的短(少于80个字符)字符串。该字符串应该不包含换行符。
hint
- 单行字符串,提供修复问题的提示。如果不能提供提示,或者提示从错误消息中不言而喻,则可以省略提示,或者
None
可以使用值。 obj
- 可选的。提供消息上下文的对象(例如,发现问题的模型)。对象应该是模型,字段或管理器或定义
__str__()
方法的任何其他对象。报告所有消息时使用该方法,其结果在消息之前。 id
- 可选字符串。问题的唯一标识符。标识符应遵循模式
applabel.X001
,其中X
一个字母CEWID
表示消息的严重性(C
对于关键字,E
对于错误等)。该数字可以由应用程序分配,但在该应用程序中应该是唯一的。
有一些子类可以更容易地创建具有公共级别的消息。使用它们时,您可以省略level
参数,因为它是由类名隐含的。
内置标签¶
Django的系统检查使用以下标记进行组织:
admin
:检查任何管理站点声明。caches
:检查缓存相关配置。compatibility
:标记版本升级的潜在问题。database
:检查与数据库相关的配置问题。默认情况下不运行数据库检查,因为它们不像常规检查那样执行静态代码分析。它们仅由migrate
命令运行,或者database
在调用check
命令时指定标记。models
:检查模型,字段和管理器定义。security
:检查与安全相关的配置。signals
:检查信号声明和处理程序注册。staticfiles
:检查django.contrib.staticfiles
配置。templates
:检查模板相关配置。translation
:检查翻译相关配置。urls
:检查URL配置。
某些检查可能会注册多个标签。
核心系统检查¶
向后兼容性¶
兼容性检查警告升级Django后可能出现的潜在问题。
- 2_0.W001:您的网址格式
<pattern>
包含aroute
,(?P<
以a开头^
或以a结尾$
。从迁移url()
到移民时,这可能是一种疏忽path()
。
数据库¶
MySQL的¶
如果您使用的是MySQL,将执行以下检查:
- mysql.E001:MySQL不允许唯一的
CharField
s具有max_length
> 255。 - mysql.W002:没有为数据库连接'<alias>'设置MySQL严格模式。另请参见设置sql_mode。
模型字段¶
- 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:All
validators
必须是可调用的。 - 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
设置为True。 - fields.E150:
GenericIPAddressField
如果不允许空值,则s不能接受空值,因为空值存储为空值。 - fields.E160:选项
auto_now
,auto_now_add
和default
互斥。这些选项中只有一个可能存在。 - fields.W161:提供固定的默认值。
- fields.W162:
<database>
不支持列上的数据库索引 。<field data type>
- fields.E170:
BinaryField
'sdefault
不能是一个字符串。请改用字节内容。 - 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中删除。
文件字段¶
- fields.E200:
unique
不是a的有效参数FileField
。 在Django 1.11中删除了此检查。 - fields.E201:
primary_key
不是a的有效参数FileField
。 - fields.E202:
FileField
的upload_to
参数必须是相对路径,而不是绝对路径。 - fields.E210:无法使用,
ImageField
因为未安装Pillow。
相关领域¶
- fields.E300:Field定义与模型的关系
<model>
,该模型未安装或是抽象的。 - fields.E301:Field定义与
<model>
已换出的模型的关系。 - fields.E302:字段与字段冲突的 访问者。
<field name>
<field name>
- fields.E303:字段与字段冲突的反向查询名称。
<field name>
<field name>
- fields.E304:字段名称与访问者的冲突 。
<field name>
<field name>
- fields.E305:字段名称与反向查询名称冲突。
<field name>
<field name>
- fields.E306:相关名称必须是有效的Python标识符或以
'+'
。结尾。 - fields.E307:该字段是使用延迟引用声明的,但未 安装app 或不提供模型。
<app label>.<model>.<field name>
<app label>.<model>
<app label>
<model>
- fields.E308:反向查询名称不得以下划线结尾。
<related query name>
- fields.E309:反向查询名称不得包含 。
<related query name>
'__'
- fields.E310:字段没有子集
<field1>
,<field2>
...型号<model>
是独一无二的。添加unique=True
任何这些字段或将至少一部分字段添加到unique_together约束。 - fields.E311:
<model>
必须设置,unique=True
因为它被a引用ForeignKey
。 - fields.E312:相关模型上不存在。
to_field
<field name>
<app label>.<model>
- fields.E320:Field指定
on_delete=SET_NULL
,但不能为null。 - fields.E321:该字段指定
on_delete=SET_DEFAULT
,但没有默认值。 - fields.E330:
ManyToManyField
s不能是唯一的。 - fields.E331:Field通过模型指定多对多关系
<model>
,该关系 尚未安装。 - fields.E332:具有中间表的多对多字段不能是对称的。
- fields.E333:该模型用作中间模型
<model>
,但它有两个以上的外键<model>
,这是不明确的。您必须通过through_fields
关键字参数指定Django应使用哪两个外键 。 - fields.E334:该模型用作中间模型
<model>
,但它有多个外键<model>
,这是不明确的。您必须通过through_fields
关键字参数指定Django应使用哪个外键 。 - fields.E335:该模型用作中间模型
<model>
,但它有多个外键<model>
,这是不明确的。您必须通过through_fields
关键字参数指定Django应使用哪个外键 。 - fields.E336:该模型用作中间模型
<model>
,但它没有外键<model>
或<model>
。 - fields.E337:Field指定
through_fields
但不提供应该用于关系的两个链接字段的名称<model>
。 - fields.E338:中间模型没有字段 。
<through model>
<field name>
- fields.E339:不是外键。
<model>.<field name>
<model>
- fields.E340:字段的中间表与表名/ 冲突。
<table name>
<model>
<model>.<field name>
- fields.W340:
null
没有效果ManyToManyField
。 - fields.W341:
ManyToManyField
不支持validators
。 - fields.W342:
unique=True
在aForeignKey
上设置与使用a 具有相同的效果OneToOneField
。 - fields.W343:
limit_choices_to
有没有影响ManyToManyField
了through
模型。
型号¶
- 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>
<model>
- models.E007:字段具有 另一个字段使用的列名。
<field name>
<column name>
- models.E008:
index_together
必须是列表或元组。 - models.E009:所有
index_together
元素必须是列表或元组。 - models.E010:
unique_together
必须是列表或元组。 - models.E011:所有
unique_together
元素必须是列表或元组。 - models.E012:
indexes/index_together/unique_together
指不存在的字段。<field name>
- models.E013:
indexes/index_together/unique_together
指的是a ,但该选项不支持s。ManyToManyField
<fieldname>
ManyToManyField
- models.E014:
ordering
必须是元组或列表(即使您只想按一个字段排序)。 - models.E015:
ordering
指不存在的字段,相关字段或查找。<field name>
- models.E016:
indexes/index_together/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 未安装或未提供模型。<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>
安全¶
安全检查不会确保您的网站安全。他们不审核代码,进行入侵检测,也不做任何特别复杂的事情。相反,它们有助于执行自动化,低悬的水果清单。它们可以帮助您记住提高网站安全性的简单方法。
其中一些检查可能不适合您的特定部署配置。例如,如果您在负载均衡器中执行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_BROWSER_XSS_FILTER
,和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严格传输安全性。请务必先阅读文档; 不小心启用HSTS会导致严重的,不可逆转的问题。 - security.W005:您尚未将
SECURE_HSTS_INCLUDE_SUBDOMAINS
设置设置为True
。如果没有这个,您的站点可能会通过与子域的不安全连接而受到攻击。True
如果您确定您的域的所有子域都应通过SSL提供,则仅将此设置为。 - security.W006:您的
SECURE_CONTENT_TYPE_NOSNIFF
设置未设置为True
,因此您的页面不会带有 标题。您应该考虑启用此标头以防止浏览器错误地识别内容类型。'X-Content-Type-Options: nosniff'
- security.W007:您的
SECURE_BROWSER_XSS_FILTER
设置未设置为True
,因此您的网页不会带有 标题。您应该考虑启用此标头来激活浏览器的XSS过滤并帮助防止XSS攻击。'X-XSS-Protection: 1; mode=block'
- security.W008:您的
SECURE_SSL_REDIRECT
设置未设置为True
。除非您的站点应通过SSL和非SSL连接提供,否则您可能希望将此设置设置为True
或配置负载平衡器或反向代理服务器以将所有连接重定向到HTTPS。 - security.W009:您的
SECRET_KEY
字符少于50个或少于5个。请生成一个长而随机的SECRET_KEY
,否则许多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
未设置为True
。使用HttpOnly
CSRF cookie会使跨站点脚本攻击更难以窃取CSRF令牌。在Django 1.11中删除了此检查,因为该 设置不提供实用的好处。CSRF_COOKIE_HTTPONLY
- security.W018:您不应该在部署中
DEBUG
设置True
。 - security.W019:你有
django.middleware.clickjacking.XFrameOptionsMiddleware
你的MIDDLEWARE
,但X_FRAME_OPTIONS
没有设置为'DENY'
。默认值为'SAMEORIGIN'
,但除非您的网站有充分理由在框架中为其自身的其他部分提供服务,否则您应将其更改为'DENY'
。 - security.W020:
ALLOWED_HOSTS
部署中不能为空。 - security.W021:您尚未将
SECURE_HSTS_PRELOAD
设置设置为True
。如果没有这个,您的网站将无法提交到浏览器预加载列表。
信号¶
- signals.E001:
<handler>
与<signal>
发送者的延迟引用连接到信号,但未 安装应用程序或未提供模型。<app label>.<model>
<app label>
<model>
翻译¶
对您的翻译配置执行以下检查:
- translation.E001:您为该设置提供了无效值
LANGUAGE_CODE
:<value>
。 - translation.E002:您在设置中提供了无效的语言代码
LANGUAGES
:<value>
。 - translation.E003:您在设置中提供了无效的语言代码
LANGUAGES_BIDI
:<value>
。 - translation.E004:您为
LANGUAGE_CODE
设置中没有的LANGUAGES
设置提供了值 。
网址¶
对URL配置执行以下检查:
- urls.W001:您的网址格式
<pattern>
使用include()
带有route
结尾的$
。从中删除美元route
以避免包括URL在内的问题。 - urls.W002:您的网址格式
<pattern>
以aroute
开头/
。因为没必要,请删除此斜杠。如果此模式以a为目标include()
,请确保include()
模式具有尾随/
。 - urls.W003:您的URL模式
<pattern>
有name
包括:
。删除冒号,以避免不明确的命名空间引用。 - urls.E004:您的网址格式
<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'
。
contrib
应用检查¶
admin
¶
管理员检查全部作为admin
标签的一部分执行。
对ModelAdmin
在admin站点注册的任何(或子类)执行以下检查 :
- 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]/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_vertical[n]
引用的值,不是属性。<field name>
<model>
- admin.E020:值
filter_vertical[n]/filter_vertical[n]
必须是多对多字段。 - admin.E021:值
radio_fields
必须是字典。 - admin.E022:
radio_fields
引用的值,不是属性。<field name>
<model>
- admin.E023:
radio_fields
引用的值,不是a ,也没有定义。<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
引用 的值,不能是a ,a ,a 或field。<fieldname>
DateTimeField
ForeignKey
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]
不是可调用的,属性或属性。<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:值必须是a 。
<InlineModelAdmin class>.model
Model
- admin.E107:值
list_display
必须是列表或元组。 - admin.E108:
list_display[n]
引用的值,<label>
不是可调用的,属性或属性或方法。<ModelAdmin class>
<model>
- admin.E109:值
list_display[n]
不能是ManyToManyField
字段。 - 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>
不引用Field。 - 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。<field name>
- admin.E128:值
date_hierarchy
必须是DateField
或DateTimeField
。 - admin.E129:
<modeladmin>
必须has_<foo>_permission()
为<action>
操作定义一个方法。 - admin.E130:
__name__
定义的操作属性<modeladmin>
必须是唯一的。
InlineModelAdmin
¶
InlineModelAdmin
对在a上注册为内联的任何内容执行以下检查 ModelAdmin
。
- admin.E201:无法排除该字段,因为它是父模型的外键。
<field name>
<app_label>.<model>
- admin.E202:
<model>
还没有ForeignKey
到./ 有不止一个到。<parent model>
<model>
ForeignKey
<parent model>
- admin.E203:值
extra
必须是整数。 - admin.E204:值
max_num
必须是整数。 - admin.E205:值
min_num
必须是整数。 - admin.E206:
formset
必须继承 的值BaseModelFormSet
。
GenericInlineModelAdmin
¶
GenericInlineModelAdmin
对在a上注册为内联的任何内容执行以下检查 ModelAdmin
。
- admin.E301:
'ct_field'
引用<label>
,不是字段<model>
。 - admin.E302:
'ct_fk_field'
引用<label>
,不是字段<model>
。 - admin.E303:
<model>
没有GenericForeignKey
。 - admin.E304:
<model>
没有GenericForeignKey
使用内容类型字段和对象ID字段。<field name>
<field name>
AdminSite
¶
对默认值执行以下检查 AdminSite
:
- admin.E401:
django.contrib.contenttypes
必须在INSTALLED_APPS
,才能使用admin应用程序。 - admin.E402:如果使用默认的auth后端,则
django.contrib.auth.context_processors.auth
必须在DjangoTemplates
(TEMPLATES
)中启用才能使用admin应用程序。 - admin.E403:
django.template.backends.django.DjangoTemplates
必须配置实例TEMPLATES
才能使用admin应用程序。 - admin.E404:
django.contrib.messages.context_processors.messages
必须在DjangoTemplates
(TEMPLATES
)中启用才能使用admin应用程序。 - 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应用程序。
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个字符,最多为244个字符。 - auth.E008:名为
<name>
model 的权限<model>
超过255个字符。 - auth.C009:必须是属性或属性而不是方法。忽略这是一个安全问题,因为匿名用户将被视为已通过身份验证!
<Usermodel>.is_anonymous
- auth.C010:必须是属性或属性而不是方法。忽略这是一个安全问题,因为匿名用户将被视为已通过身份验证!
<Usermodel>.is_authenticated
contenttypes
¶
当模型包含a 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应该是可调用的而不是实例,因此它不会在所有字段实例之间共享。
sites
¶
使用以下方法对任何模型执行以下检查 CurrentSiteManager
:
- sites.E001:
CurrentSiteManager
找不到名为的字段 。<field name>
- sites.E002:
CurrentSiteManager
不能使用,<field>
因为它不是外键或多对多字段。
staticfiles
¶
以下检查验证是否django.contrib.staticfiles
已正确配置:
- staticfiles.E001:该
STATICFILES_DIRS
设置不是元组或列表。 - staticfiles.E002:该
STATICFILES_DIRS
设置不应包含该STATIC_ROOT
设置。 - staticfiles.E003:前缀
<prefix>
的STATICFILES_DIRS
设置不能以斜线结束。