概述
Django使用gzip实现压缩请求,以实现API接口返回的json数据压缩(适用于大量数据在浏览器进行传输中耗费时间长的情况)
1、网站全部支持gzip
在配置文件中增加
MIDDLEWARE_CLASSES = (
'django.middleware.gzip.GZipMiddleware',
)
2、如果希望更细微的gzip力度控制
django提供了gzip_page装饰器来处理:
- @gzip_page用于对视图函数,
@gzip_page def viewFunc(request): return HttpResponse("hello"*100)
-
@gzip_page用于类视图
class HomeView(View): @gzip_page def get(self, request): return render(request, "home.html") @gzip_page def post(self, request): print("Home View POST method...") return redirect("/index/")
上面是对get请求方法和post请求方法使用了压缩
from django.views.decorators.gzip import gzip_page from django.utils.decorators import method_decorator @method_decorator(gzip_page, name='dispatch') class CloudProductViewSet(viewsets.ModelViewSet): """ 云雷达反射率、速度、谱宽、液态水含量等产品新的API接口 2019.10.10 """ def get_queryset(self): pass def list(self, request, *args, **kwargs): pass
name='dispatch'因为dispatch方法被 as_view() 中的 view() 调用,也就相当于对整个类视图的方法添加装饰器
注意:对上面这个继承viewsets.ModelViewSet类来说,@gzip_page不能直接加在 get_queryset() 或者 list()方法 中,因为压缩是对整个请求来说(比如get请求),而单独加在类中的函数中,只是对这个函数作用,并不是对整个请求作用,所以出现错误等情况,以上必须对整个类添加装饰器,才是完整的对请求进行压缩
感谢以下朋友的分享:
https://www.cnblogs.com/weilaibuxiangshuo/p/10411962.html
https://blog.csdn.net/weixin_30886233/article/details/96768596?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
最后
以上就是想人陪背包为你收集整理的Django使用gzip压缩请求,适用于后端向前端浏览器传输大量数据时对数据进行压缩的需求,以增加数据传输效率的全部内容,希望文章能够帮你解决Django使用gzip压缩请求,适用于后端向前端浏览器传输大量数据时对数据进行压缩的需求,以增加数据传输效率所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复