ModelViewSet
-
功能
1.认证 (登录认证) 2.权限 (规定用户的可操作范围) 3.限流 (限制接口访问速度) 4.分页 5.序列化 (返回json) 6.过滤 () 7.排序 (ordering=-id) 8.版本 (接口版本号,用v1/v2/v3)
-
安装DjangoRestFramework
pip install djangorestframework==3.11.1 pip install django-filter==2.3.0 #过滤器 pip install markdown
-
在settings中注册
INSTALLED_APPS = [ 'Django_filter', 'rest_frameword', ]
-
在settings配置DRF
# 过滤器 # 1,安装 django-filter # 2,注册应用 # 3,配置settings, 在view里配置可过滤的字段 # 4,使用 查询字符串携带过滤信息 REST_FRAMEWORK = { # 文档报错: AttributeError: ‘AutoSchema’ object has no attribute ‘get_link’ # 用下面的设置可以解决 'DEFAULT_SCHEMA_CLASS':'rest_framework.schemas.AutoSchema', # 默认设置是: # 'DEFAULT_SCHEMA_CLASS':'rest_framework.schemas.openapi.AutoSchema', # 异常处理器 # 'EXCEPTION_HANDLER': 'user.utils.exception_handler', # Base API policies 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ], 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', 'rest_framework.parsers.MultiPartParser' ], # 1.认证器(全局) 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.SessionAuthentication', # 使用session时的认证器 'rest_framework.authentication.BasicAuthentication' # 提交表单时的认证器 ], #2.权限配置(全局): 顺序靠上的严格 'DEFAULT_PERMISSION_CLASSES': [ # 'rest_framework.permissions.IsAdminUser', # 管理员可以访问 # 'rest_framework.permissions.IsAuthenticated', # 认证用户可以访问 # 'rest_framework.permissions.IsAuthenticatedOrReadOnly', # 认证用户可以访问, 否则只能读取 # 'rest_framework.permissions.AllowAny', # 所有用户都可以访问 ], #3.限流(防爬虫) 'DEFAULT_THROTTLE_CLASSES': [ 'rest_framework.throttling.AnonRateThrottle', 'rest_framework.throttling.UserRateThrottle', ], #3.1限流策略 'DEFAULT_THROTTLE_RATES': { 'user': '100/hour', # 认证用户每小时100次 'anon': '3/day', # 未认证用户每天能访问3次 }, 'DEFAULT_CONTENT_NEGOTIATION_CLASS': 'rest_framework.negotiation.DefaultContentNegotiation'