Django的完美主义者的网络框架与截止日期。
系统检查框架
系统检查框架是一组用于验证Django项目的静态检查。它可以检测常见问题并提供有关如何解决这些问题的提示。该框架是可扩展的,因此您可以轻松添加自己的检查。
有关如何添加自己的检查并将它们与Django的系统检查集成的详细信息,请参阅系统检查主题指南。
API参考¶
CheckMessage
¶
系统检查引发的警告和错误必须是实例 CheckMessage
。实例封装了单个可报告的错误或警告。它还提供适用于消息的上下文和提示,以及用于过滤目的的唯一标识符。
构造函数参数是:
-
消息的严重性。使用预定义值之一:
DEBUG
,INFO
,WARNING
,ERROR
,CRITICAL
。如果级别大于或等于ERROR
,则Django将阻止执行管理命令。级别低于ERROR
(即警告)的消息将报告给控制台,但可以静音。 - 描述问题的短(少于80个字符)字符串。该字符串应该 不 包含换行符。
-
单行字符串,提供修复问题的提示。如果不能提供提示,或者提示从错误消息中不言而喻,则可以省略提示,或者
None
可以使用值。 -
可选的。提供消息上下文的对象(例如,发现问题的模型)。对象应该是模型,字段或管理器或定义
__str__()
方法的任何其他对象。报告所有消息时使用该方法,其结果在消息之前。 -
可选字符串。问题的唯一标识符。标识符应遵循模式
applabel.X001
,其中X
一个字母CEWID
表示消息的严重性(C
对于关键字,E
对于错误等)。该数字可以由应用程序分配,但在该应用程序中应该是唯一的。
level
msg
hint
obj
id
有一些子类可以更容易地创建具有公共级别的消息。使用它们时,您可以省略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