Django Rest framework视图-----限流和过滤
2019-06-02 13:26
615 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38181278/article/details/90738443
限流Throttling
可以对接口访问的频次进行限制,以减轻服务器压力。
使用
可以在配置文件中,使用
DEFAULT_THROTTLE_CLASSES和
DEFAULT_THROTTLE_RATES进行全局配置,
[code]REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': ( 'rest_framework.throttling.AnonRateThrottle', # 匿名用户 'rest_framework.throttling.UserRateThrottle' # 认证用户 ), 'DEFAULT_THROTTLE_RATES': { 'anon': '100/day', # 匿名用户每天100次访问 'user': '1000/day' # 认证用户每天1000次访问 } }
DEFAULT_THROTTLE_RATES可以使用
second,
minute,
hour或
day来指明周期。
也可以在具体视图中通过throttle_classess属性来配置,如
[code]from rest_framework.throttling import UserRateThrottle from rest_framework.views import APIView class ExampleView(APIView): throttle_classes = (UserRateThrottle,) ...
可选限流类
1) AnonRateThrottle
限制所有匿名未认证用户,使用IP区分用户。
使用
DEFAULT_THROTTLE_RATES['anon']来设置频次
2)UserRateThrottle
限制认证用户,使用User id 来区分。
使用
DEFAULT_THROTTLE_RATES['user']来设置频次
3)ScopedRateThrottle
限制用户对于每个视图的访问频次,使用ip或user id。
[code]REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': ( 'rest_framework.throttling.ScopedRateThrottle', ), 'DEFAULT_THROTTLE_RATES': { 'contacts': '1000/day', 'uploads': '20/day' } }
[code]class ContactDetailView(APIView): throttle_scope = 'contacts' ... class UploadView(APIView): throttle_scope = 'uploads' ...
过滤Filtering
对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。
[code]pip install django-filter
在配置文件中增加过滤后端的设置:
[code]INSTALLED_APPS = [ ... 'django_filters', # 需要注册应用, ] REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',) }
在视图中添加filter_fields属性,指定可以过滤的字段
[code]class BookListView(ListAPIView): queryset = BookInfo.objects.all() serializer_class = BookInfoSerializer filter_fields = ('btitle', 'bread') # 127.0.0.1:8000/books/?bread=20
相关文章推荐
- Django REST framework教程三: 基于类的视图
- django Rest Framework----GenericAPIView 通用视图 GenericAPIView源码分析
- Django REST framework 中 3 种类视图的对比
- Django rest framework视图
- django rest framework 之 视图
- django rest framework 数据的查找、过滤、排序的示例
- django rest framework 视图类的关系
- Django REST Framework学习-分页,通用视图,自定义RelatedField
- Django Rest Framework源码剖析(八)-----视图与路由
- Django REST framework视图的用法
- django rest framework 数据的查找、过滤、排序的示例
- Django REST framework 视图和路由详解
- Django REST framework 中 3 种类视图的对比
- Django Rest framework视图-----排序和分页
- Django REST FrameWork中文教程3:基于类的视图
- Django Rest Framework----ModelViewSet视图 ModelViewSet源码分析
- Django入门3:视图views
- Django REST framework-API指南03-Class-based Views 原创翻译
- django_DRF的视图获取参数Kwargs篇
- django多表过滤和搜索