django缓存基于类的视图
引子:
有些场景下由于数据库中的数据很长时间内都不会发生变化,如果每次调用view都要去查询一次数据库的话,明显是多做了一些无用
工的;django中可以通过装饰器方便的实现view的缓存。
为什么class-based-view中的方法不能直接装饰:
由于class-based-view中的方法与function-based-view在内部处理上有着本质上的不同、所以不能直接装饰方法;要通过method_decorator来适配
怎么做:
1、要缓存首先就要解决把数据缓存在哪里的问题;常见的可以用来保存缓存对象的地方有“内存”,“数据库”,“文件系统” 等等..... 下面以把数据缓存
到文件内存为例讲解django应该怎么配置。缓存的目标位置是通过配置来决定的、
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
2、给方法增加装饰、以把它标记为是要缓存的对象、示例代码如下:
from django.shortcuts import render
from django.views import View
from django.http import HttpResponse
from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
# Create your views here. class HelloPage(View):
@method_decorator(cache_page(60*60*24))
def get(self,request):
print("enter HelloPage.get") return HttpResponse('Hello world ...')
对于class-based-veiw来说不能直接通过cache_page来装饰了、要通过method_decorator来适配一下。
对比:
1、没有缓存的情况下每一次访问HelloPage.get方法都要被执行

2、有缓存的情况下HelloPage.get方法只执行一次

-----
django缓存基于类的视图的更多相关文章
- django 中基于类的视图
django 视图 分为两种: 1. FBV 基于函数的视图 function based view 2. CBV 基于类的视图 class based ...
- Django编写RESTful API(三):基于类的视图
欢迎访问我的个人网站:www.comingnext.cn 前言 在上一篇文章中,主要讲的是请求和响应,项目里面views.py中的视图函数都是基于函数的,并且我们介绍了@api_view这个很有用的装 ...
- Django REST FrameWork中文教程3:基于类的视图
我们也可以使用基于类的视图编写我们的API视图,而不是基于函数的视图.我们将看到这是一个强大的模式,允许我们重用常用功能,并帮助我们保持代码DRY. 使用基于类的视图重写我们的API 我们将首先将根视 ...
- Django 基于类的视图(CBV)执行流程 CBV 源码分析
一.CBV(基于类的视图) 视图是可以调用的,它接受请求并返回响应,这不仅仅是一个函数,Django提供了一些可以用作视图的类的例子,这些允许您通过继承或mixin来构建视图并重用代码. 基本示例 D ...
- Django——基于类的视图源码分析 一
基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式. 借助于OO和Python中方便的多重继承特性, ...
- Django——基于类的视图源码分析 二
源码分析 抽象类和常用视图(base.py) 这个文件包含视图的顶级抽象类(View),基于模板的工具类(TemplateResponseMixin),模板视图(TemplateView)和重定向视图 ...
- Django——基于类的视图(class-based view)
刚开始的时候,django只有基于函数的视图(Function-based views).为了解决开发视图中繁杂的重复代码,基于函数的通用视图( Funcation-based generic vie ...
- Django笔记&教程 7-1 基于类的视图(Class-based views)介绍
Django 自学笔记兼学习教程第7章第1节--基于类的视图(Class-based views)介绍 点击查看教程总目录 1 介绍 Class-based views (CBVs) are view ...
- 03_Tutorial 3: Class-based Views 基于类的视图(CBV)
1.CBV 0.文档 https://q1mi.github.io/Django-REST-framework-documentation/tutorial/3-class-based-views_z ...
随机推荐
- jquery keycode
判断键盘按下的键 $(window).keydown(function(event) { switch (event.which) { case (13): //Enter //要执行的操作 brea ...
- resultType、resultMap
resultType: 作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中. 场合: 常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用re ...
- Aerospike系列:6:AerospikeTools & Utilities
1:Aerospike Query Language类似于SQL命令.可以用来管理索引和用户自定义函数,也可以测试大多数数据库的功能. [root@localhost ~]#aql OPTIONS - ...
- J4架构应用过程中出现的问题与解决摘录
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6369346.html sendRedirect()的页面不能用EL表达式获取参数:因为是新的request.E ...
- Spring Cloud Edgware Release Notes
Spring Cloud Edgware builds on Spring Boot 1.5.x. Renamed starters A number of starters did not foll ...
- Newifi2(D1) 刷入pb-boot和breed的记录
今天要给一个newifi d1刷系统时发现居然还是原厂的uboot, 使用uboot刷入rom时会进行校验拦截第三方的rom. 之前有刷过这个设备的, 但是已经完全记不清怎么处理的了. 查了一下, 这 ...
- C#几个小知识点
一.float数据类型 小数在C#中需要用浮点型表示,浮点值就是.后面的小数点.C#语言中有两种小数类型,分别为32位单精度浮点型(float) 和64位双精度浮点型(double).其中精度指的是小 ...
- shell 脚本启动spring boot的jar 包
#!/bin/bash # kill java进程 java_sso_prod_pid=`ps aux|grep sso.jar|grep -v "grep"|awk '{prin ...
- nodejs中的exports和module.exports
module是随文件而生的全局变量,它有exports属性,这个属性默认是一个空的字典. node的设计者画蛇添足有定义了一个exports全局变量,export指向module.exports所指向 ...
- rabbitMQ概念详细介绍
1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...