一、使用装饰器
在文件开头导入下面代码,然后在函数上方添加缓存的装饰器
from django.views.decorators.cache import cache_page
@cache_page(30) # 过期时间单位(秒)
二、原生缓存
Django中提供了6种缓存方式:
- 开发调试
- 内存
- 文件
- 数据库
- Memcache缓存(python-memcached模块)
- Memcache缓存(pylibmc模块)
常用的缓存配置
Memcache缓存
首先要创建缓存表
python manage.py createcachetable [table_name]
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'cache_table',
'TIMEOUT': '60',
'OPTIONS': {
'MAX_ENTRIES': '300',
},
'KEY_PREFIX': 'rock',
'VERSION': '1',
}
}
redis缓存
首先要安装django-redis
pip install django-redis
在settings.py 文件配置链接的redis数据库
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
在视图使用:
from django.forms import model_to_dict
from django.http import JsonResponse
from django.core.cache import cache
from app.models import Engineer
def my_cache_test(req):
# 看缓存有没有数据
res = cache.get('data')
if res:return JsonResponse(res)
else:
# 查数据
data = Engineer.objects.all()
# 把对象转成字典
# model_to_dict()
c_data = [] for i in data:
c_data.append(model_to_dict(i))
result = {'my_data':c_data}
# 设置缓存
cache.set('data',result,30)
# 返回数据给前端
return JsonResponse(result)