Django屏蔽CacheKeyWarning缓存键长度警告的正确配置方法
Django 3.2 屏蔽CacheKeyWarning缓存键长度警告的正确实现方式
失效原因
之前操作不生效的核心问题是文件路径、命名不符合Django的模块加载规则:Django不会主动扫描management文件夹下自定义命名的management.py文件,写在里面的代码根本不会被项目启动流程加载。
按官方文档要求的正确存放步骤
- 先确认你用来放代码的自定义app已经加入
settings.py的INSTALLED_APPS配置列表,否则该app下的所有模块都不会被Django识别 - 在目标app的根目录下创建符合Python包规范的目录结构:
- 新建名为
management的文件夹,在文件夹内创建空文件__init__.py,将该目录标记为可导入的Python包 - 在
management文件夹内新建名为commands的子文件夹,同样在子文件夹内创建空的__init__.py文件(这一步是Django识别management模块的必需结构,哪怕你不写自定义命令也要建)
- 新建名为
- 把警告屏蔽代码写入
management/__init__.py文件中,代码内容如下:
import warnings from django.core.cache import CacheKeyWarning warnings.filterwarnings("ignore", category=CacheKeyWarning)
- 保存文件后重启Django服务,警告就会被完全屏蔽。
更简便的替代方案
如果不想严格按照management模块的结构建目录,可以直接把上面的警告过滤代码写到项目settings.py的最末尾,全局生效,不需要依赖app的模块加载逻辑,效果完全一致。
内容的提问来源于stack exchange,提问作者DBpk
相关产品推荐
相关产品推荐

