decorators@condition,@last_modified和@etag for django rest框架

django-rest-framework-condition的Python项目详细描述


django rest框架条件

Build Statuscodecov

这个包允许您在viewset或 来自django rest框架的apieview。换句话说,可以使用http头 ETag和最后一次修改的API。

它不创建etag或last-modified头的自定义实现,而是使用来自django的实现,这意味着您可以确保django的作者会更新它。

类似地,在django中,您可以使用快捷装饰符@last_modified@etag

测试时间:

  • Python:2.7,3.7
  • django:1.11、2.0、2.1、2.2
  • django rest框架:3.8、3.9

安装

pip install django-rest-framework-condition

用法

使用decorators的方式与使用django视图的方式相同。

上次修改的示例

fromdatetimeimportdatetimefromrest_framework.responseimportResponsefromrest_framework.viewsimportAPIViewfromrest_framework_conditionimportlast_modifiedclassLastModifiedApiView(APIView):@last_modified(lambda_:datetime(2019,1,1))defget(self,request):returnResponse({'data':'I have Last-Modified header!'})

etag示例

importhashlibfromrest_framework.responseimportResponsefromrest_framework.viewsimportAPIViewfromrest_framework_conditionimportetagdefmy_etag(request,*args,**kwargs):returnhashlib.md5(':'.join(request.GET.dict().values()).encode('utf-8')).hexdigest()classEtagApiView(APIView):@etag(my_etag)defget(self,request):returnResponse({'data':'I have Etag!'})

ETag和上次修改的示例

importhashlibfromdatetimeimportdatetimefromrest_framework.responseimportResponsefromrest_framework.viewsimportAPIViewfromrest_framework_conditionimportconditiondefmy_etag(request,*args,**kwargs):returnhashlib.md5(':'.join(request.GET.dict().values()).encode('utf-8')).hexdigest()defmy_last_modified(request,*args,**kwargs):returndatetime(2019,1,1)classConditionApiView(APIView):@condition(etag_func=my_etag,last_modified_func=my_last_modified)defget(self,request):returnResponse({'data':'I have both Last-Modified and Etag!'})

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java需要在环境或系统属性中指定类名,或者作为小程序参数,或者在应用程序资源文件[springtest]中指定类名   使用流映射java 8转换另一个列表中的列表   docusignapi如何使用java将信封状态更改为“void”?   java Hibernate“提供的id类型错误,预期为Long,Get class DelayedPostInsertIdentifier”异常   升级Tomcatembed版本后java Basic登录身份验证失败   java如何将第三个元素作为循环从数组中删除?   playframework 2.0注销流程正在运行!框架2.0,java   java如何读取hadoop顺序文件?   java如何循环json并在上下文中发布每个索引   爪哇树深度   java多线程场景中的多线程列表更新   java遗传算法:请求优化   java jersey http客户端自定义请求方法   Ubuntu 12.04上带有openjdk 6的java NullPointerException   java如何获取页面上动态显示的复选框的ID   如果以D/M而不是DD/MM的形式输入日期或月份,则将前导零添加到日期字段   java Apache Oltu+Microsoft Integration OAuthProblemException{error='invalid_request',description='missing required parameters',包含无效的   java JsonWriter IOException不完整文档   java无法对非静态字段(操作侦听器)进行静态引用