请求:
继承APIView后,drf提供了一个新的request,老的赋值给它的属性了。Request._request = request
响应:
drf中的Response类
继承关系:SimpleTemplateResponse---->django的HttpResponse
class Response(SimpleTemplateResponse):
def __init__(self,
data=None, # ser.data 传字典或列表。
status=None, # http响应状态码,None就是200
template_name=None, # 在浏览器访问的模板名字,(可以自定义)
headers=None, # 响应头,字典
exception=False, # 异常不用管
content_type=None): # 响应编码类型
掌握3个:data、status、headers
完整写法:
{'code':200,'msg':'查询成功','result':ser.data}
return Response()
# 查看状态码:
from rest_framework import status
*******************************一般不用配置这个********************************
1 Response响应格式的全局配置
# drf的配置都写在这个字典里
# drf也有默认配置文件,如果项目的配置文件里配置了使用项目里的,反正使用默认的.
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
# 返回样式的配置(一般不配置),默认有两个json,浏览器的
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
}
2、局部配置 (只针对某一个视图类)
from rest_framework.renderers import BrowsableAPIRenderer,JSONRenderer
class BookView(APIView):
renderer_classes = [JSONRenderer] # 在里配置就行,一般不用配置
def post(self,request):
sser = BookSerializers(data=request.data)
if sser.is_valid():
sser.save()
return Response(sser.data)
def get(self,request):
book_list = Books.objects.all()
sser = BookSerializers(instance=book_list,many=True)
print(type(sser))
return Response(sser.data)