文章目錄

在前面的省/市/区(县)的例子中,如果查询某个省下面的市信息是一个常用的操作时,此时可以使用缓存。

Django提供了cache功能,只需要进行简单配置就可以使用。缓存可以保存在很多地方,如Memcached, Redis等,这里以Redis为例。

按照django-redis官方文档, pip install django-redis进行安装。在项目的settings.py里添加如下配置

1
2
3
4
5
6
7
8
9
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}

之后就可以使用缓存了。在area应用里添加cache.py文件,添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
#coding:utf-8
from django.core.cache import cache
from .models import Area

def city_cache(province):
"""市"""
key = 'city_list_%s' % province
cities = cache.get(key)
if cities is None:
cities = list(Area.objects.filter(parent_id=province))
cache.set(key, cities, 36000)
return cities

这样调用city_cache时,传入省份id,就可以得到这个省下面的所有市的列表。

具体操作可以参看我在github上的test-django仓库

打赏作者

文章目錄