You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中dir()无法显示cache对象的缓存方法,如何查看?

Django缓存对象的方法无法通过dir()显示的解决办法

原因

从django.core.cache导入的cache是CacheHandler类的实例,它本质是一个代理对象——通过__getattr__魔术方法,将所有缓存操作方法动态转发给实际的缓存后端(比如本地内存缓存LocMemCache、Redis缓存RedisCache等)。而Python的dir()函数默认只会返回对象自身定义的属性和方法,不会包含通过__getattr__动态代理的方法,所以你看不到set()、get()这些缓存方法。

解决方法

方法1:获取实际的缓存后端实例后调用dir()

直接获取cache代理的真实缓存对象,再对其执行dir(),就能看到所有缓存方法:

from django.core.cache import cache

# 获取实际的缓存后端实例
actual_cache = cache._get_cache()
# 查看所有方法
print(dir(actual_cache))

执行后,输出里就会包含set()、get()、touch()等你需要的缓存操作方法。

方法2:直接查看缓存后端类的定义

根据项目settings.py中CACHES配置的后端类型,导入对应类并查看方法:

# 示例:本地内存缓存后端
from django.core.cache.backends.locmem import LocMemCache
print(dir(LocMemCache))

# 若使用Redis缓存,导入对应类
# from django.core.cache.backends.redis import RedisCache
# print(dir(RedisCache))

方法3:使用inspect模块枚举可用方法

借助inspect模块筛选出所有可调用的方法,包含动态代理的缓存操作方法:

import inspect
from django.core.cache import cache

# 获取所有可调用的属性
available_methods = [name for name, _ in inspect.getmembers(cache, predicate=inspect.ismethod)]
print(available_methods)

内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 08:52:42