Django runserver启动报SystemCheckError系统检查错误问题咨询
Django启动报错问题原因与解决方法
阻塞启动的reCAPTCHA配置错误
问题原因
项目集成的django-recaptcha验证码组件当前使用Google公开测试密钥,Django系统检查机制判定生产环境下使用测试密钥存在功能异常风险,直接抛出错误中断服务启动流程。
解决方法
根据使用场景二选一即可:
- 本地开发调试:在项目
settings.py中添加如下配置,跳过该项系统检查:
SILENCED_SYSTEM_CHECKS = ['captcha.recaptcha_test_key_error']
- 生产环境部署:申请对应服务域名的reCAPTCHA公私钥,替换
settings.py中默认的RECAPTCHA_PUBLIC_KEY、RECAPTCHA_PRIVATE_KEY配置项,不要使用测试密钥。
模型主键类型警告(不阻塞启动)
问题原因
Django 3.2及以上版本调整了隐式主键的默认规则,若模型未手动指定主键字段类型,系统会抛出W042警告,提醒开发者显式配置主键类型,避免跨版本默认值不一致引发的数据兼容问题。当前main应用下的AdditionalImage、AdvUser、Board、Comment、Rubric、SubRubric、SuperRubric共7个模型均未手动指定主键,因此触发警告。
解决方法
两种方案选其一即可:
- 全局生效配置:在
settings.py中添加全局默认主键类型配置,覆盖所有应用的模型:
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
- 单应用生效配置:如果只想为main应用单独配置,修改
main/apps.py中的MainConfig类,添加default_auto_field属性:
from django.apps import AppConfig class MainConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'main'
以上配置修改完成后,重新执行
python manage.py runserver即可正常启动服务。
内容的提问来源于stack exchange,提问作者Leonid Price
相关产品推荐
相关产品推荐

