三、DRF框架中的APIView
DRF中的Request
继承DRF框架中APIView之后,request是DRF中的response对象,会根据请求头中的Content-Type,自动进行解析
Response对HttpRequest进行的拓展,HttpRequest有的功能Response都支持
request.data来接收x-www-form或json参数或文件,之前django提供的只能通过body来接收json参数,使用requet.POST来获取www-from表单类型的参数
request.query_params来接收查询字符串参数
DRF中的Response
如果请求头中没有Accept,那么默认返回json,如果添加了Accept,那么会以Accept指定的格式返回
def get(self, request, pk): one_project = self.get_object(pk) serializer = serializers.ProjectSerializer(instance=one_project) return Response(data=serializer.data, status=status.HTTP_200_OK)
Response(data,status=None,template_name=None,headers=None,Content-Type=None)
参数说明:
data:序列化处理后的数据,一般为serillizer.data
status:状态码
template_name:渲染的模板,一般不需要指定
headers:指定头部信息,一般不需要指定, 会自动处理
Content-Type:指定格式,一般不需要指定,会自动根据Accept来处理
覆盖DRF框架中的默认配置
需要在Django项目的全局配置表setting中覆盖
REST_FRAMEWORK = { # 默认响应渲染类 'DEFAULT_RENDERER_CLASSES':( # json渲染器为第一优先级 'rest_framework.renderers.JSONRenderer', # DRF提供接口返回的一个内置页面,如果注释下方代码网页访问就只能看到接口返回的信息 'rest_framework.renderers.BrowsableAPIRenderer' ) }
APIView与View的不同之处
传入到视图方法中的是Request对象,而不是Django中的HttpReauest对象
视图方法可以返回Response对象,会为响应数据处理为符合前端要求的格式
任何APIException异常都会被捕获到,并且处理成合适的响应信息
在进行dispatch()分布前
提供的功能:
authentication_classes 列表或元组,身份认证类
permission_classes 列表或元组,权限检查类
ehrottle_classes 列表或元组,流量控制类(主要为了反爬虫)
浙公网安备 33010602011771号