栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Django中缓存查询结果

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Django中缓存查询结果

将缓存的查询弹出到Django的缓存中:

from django.core.cache import cachecache.set('key', queryset)

然后创建一个上下文处理器,将缓存的值添加到所有模板中:

# myproject/myapp/context_processors.pyfrom django.core.cache import cachedef cached_queries():    return {'cache', cache.get('key')}

然后在你的Django设置文件中添加上下文处理器:

TEMPLATE_CONTEXT_PROCESSORS += (    'myproject.myapp.context_processors.cached_queries')

现在,你将能够访问

cache
所有通用模板以及具有请求上下文的所有模板中的变量,如果在视图中完成此操作,则会获得一个模板:

return render_to_response('my_template.html',    my_data_dictionary,    context_instance=RequestContext(request))

何时设置缓存
这取决于缓存中包含的内容。但是,一个普遍的问题是,只有在发送页面请求时,Django才真正真正执行Python,而这通常不是你想要进行此类工作的地方。

一种替代方法是为特定应用程序创建自定义管理命令。然后,你可以在必要时手动运行此程序,或更常见的情况是将其设置为cron作业。

要创建你必须创建后裔居住类的管理命令

Command
一个内
management/commands
位于应用程序的目录里面:

# myproject/myapp/management/commands/update_cache.pyfrom django.core.management.base import NoArgsCommandfrom django.core.cache import cacheclass Command(NoArgsCommand):    help = 'Refreshes my cache'    def handle_noargs(self, **options):        cache.set('key', queryset)

该文件的名称很重要,因为这将是命令的名称。在这种情况下,你现在可以在命令行上调用它:

python manage.py update_cache


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号