Django检查框架函数存放位置及自定义检查代码接入方法咨询
Django自定义检查的实现指南
代码存放位置
社区通用做法是把自定义检查代码放在对应app目录下的checks.py文件里——如果app里没有这个文件,直接新建就行,既符合约定也方便后续维护。
接入检查框架的具体步骤
1. 编写检查函数
在checks.py里定义检查逻辑,示例如下:
from django.core.checks import register, Warning from django.conf import settings def check_my_required_setting(app_configs, **kwargs): errors = [] # 替换为你的实际检查逻辑,比如验证必填配置项 if not hasattr(settings, 'MY_REQUIRED_SETTING') or not settings.MY_REQUIRED_SETTING: errors.append( Warning( '缺少必要配置项MY_REQUIRED_SETTING', hint='请在settings.py中添加该配置并赋值', id='myapp.W001', # 自定义错误ID,格式为「app名.编号」 ) ) return errors
2. 注册检查函数
有两种注册方式可选:
- 全局注册:检查整个项目,直接用
@register()装饰器:@register() def check_my_required_setting(app_configs, **kwargs): # 检查逻辑... - 指定App注册:仅检查特定app,给
register()传app_configs参数:@register(app_configs=['myapp']) def check_my_required_setting(app_configs, **kwargs): # 检查逻辑...
3. 让Django识别检查函数
在app的apps.py文件中,修改AppConfig类的ready()方法,导入checks模块触发注册:
from django.apps import AppConfig class MyAppConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'myapp' def ready(self): # 导入checks模块,确保注册逻辑执行 import myapp.checks
4. 验证效果
运行Django自带的检查命令:
python manage.py check
如果你的检查逻辑触发了问题,终端会输出对应的警告或错误信息。
额外小贴士
- 检查级别可选
Debug、Info、Warning、Error、Critical,都从django.core.checks导入,按需选择即可。 - 检查函数的
app_configs参数会传入当前待检查的app配置列表,**kwargs留着兼容未来的参数扩展,建议不要删掉。
内容的提问来源于stack exchange,提问作者Kiwiheretic
相关产品推荐
相关产品推荐

