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

求助:Django视图中DatabaseCache无法存储值且无法访问

排查Django DatabaseCache无法访问/存储的问题

我来帮你梳理下可能的问题点,按步骤排查应该能解决:

首先,先确认缓存表是否已经创建——这是使用DatabaseCache最容易踩的坑!Django不会自动生成缓存对应的数据库表,你需要手动执行命令:

python manage.py createcachetable

执行完成后,去数据库里确认是否生成了名为caches的表(对应你settings里LOCATION配置的表名),如果这个表不存在,缓存肯定无法正常工作。

接下来,检查视图里的缓存使用代码是否正确。你需要先导入Django的缓存模块,再用标准API操作,示例代码如下:

from django.core.cache import cache
from rest_framework.response import Response
from rest_framework.decorators import api_view

@api_view(['GET'])
def test_cache_operation(request):
    # 存储缓存值
    cache.set('sample_key', 'cached_content', timeout=300)
    # 读取缓存值
    cached_data = cache.get('sample_key')
    return Response({'result': cached_data})

如果你的视图里没正确导入cache,或者调用方法有误(比如拼写错误),也会导致存储/读取失败。

然后,验证settings配置是否真正生效。有时候可能在环境特定的配置文件(比如production.py)里重新定义了CACHES,覆盖了默认配置。你可以在shell里快速验证:

python manage.py shell
>>> from django.core.cache import cache
>>> cache.__class__.__module__
# 正常应该输出 'django.core.cache.backends.db'

如果输出不是这个,说明你的缓存配置没生效,得检查settings的加载顺序和其他配置文件的覆盖情况。

另外,检查数据库权限:确保你DATABASES配置里的数据库用户,对caches表拥有SELECT、INSERT、UPDATE、DELETE权限,权限不足也会导致缓存操作失败。

最后,建议先在shell里做极简测试,排除视图逻辑的干扰:

python manage.py shell
>>> from django.core.cache import cache
>>> cache.set('test_key', 'hello_cache')
>>> cache.get('test_key')
# 正常应该返回 'hello_cache'

如果shell里操作正常,那问题大概率出在你的视图代码逻辑里;如果shell里也失败,就回到前面的步骤检查表创建、配置和权限。


内容的提问来源于stack exchange,提问作者Samuel Skånberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:15:16