Django json策略?

fre*_*row 2 django json caching

我正在使用wunderground的json api来查询我的网站上的天气状况.api给了我一个很好的json对象以及所有必要的数据,但我每天只能进行一些调用.存储此数据的首选方法是什么?

我正在考虑将json转储到一个文件中,并检查它的时间戳:如果它超过60分钟,则获取新的并覆盖,如果不是,则从磁盘读取文件.我不会创建一个数据库表来存储我基本上不需要的天气数据.是否有一些聪明的Django缓存此过程的方法或我应该手动执行?

Jor*_*dan 5

是的,Django有一个内置的缓存机制.如果您不想安装缓存服务器,可以使用文件系统缓存,这与您正在谈论的内容几乎相同,但您不必自己滚动它.

这是文档.

你可以在settings.py中输入这样的东西

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
    }
}
Run Code Online (Sandbox Code Playgroud)

在您的应用程序代码中,您可以使用一些逻辑来检查缓存,如果找不到,则从服务器加载并缓存它.

from django.core.cache import cache

weather_json_data = cache.get('weather_90210'):
if not weather_json_data:
    weather_json_data = get_data_from_api(zip)

    cache.set('weather_{0}'.format(zip), weather_json_data, 60)

#return the weather_json_data through HttpResponse here
Run Code Online (Sandbox Code Playgroud)