Request 和 Response对象 替代django 内置的HttpRequest 和HttpResponse
Request 对象:
1.request.POST 只能处理表单数据,获取通过post方式上传的数据
2.request.data 可以处理任意的数据,可以通过post,put,patch等方式上传的数据
3.request.query_params 查询参数
Response对象:
可以自动的根据返回的数据类型来决定返回什么样的数据,并且会自动监听如果是浏览器访问,那么返回这个路由的信息
使用原生
@require_http_methods(['GET','POST'])
def merchant(request):
# get 返回所有
# post 创建新的商家
if request.method == 'GET':
queryset = Merchant.objects.all()
serializer = MerchantSerializer(instance=queryset,many=True)
return JsonResponse(serializer.data,status=200,safe=False)
else:
serializer = MerchantSerializer(data=request.POST)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data,status=200)
else:
return JsonResponse(serializer.errors, status=400)
from rest_framework.response import Response
from rest_framework.decorators import api_view
# http://127.0.0.1:8000/serializerapp/merchant/ get 获取所有
# http://127.0.0.1:8000/serializerapp/merchant/ post 添加
#@require_http_methods(['GET','POST'])
@api_view(['GET','POST'])
def merchant(request):
# get 返回所有
# post 创建新的商家
if request.method == 'GET':
queryset = Merchant.objects.all()
serializer = MerchantSerializer(instance=queryset,many=True)
#return JsonResponse(serializer.data,status=200,safe=False)
return Response(serializer.data, status=200)
else:
serializer = MerchantSerializer(data=request.POST)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data,status=200)
else:
return JsonResponse(serializer.errors, status=400)
实现APIView:
以上Response 和Request 对象都只能在DRF的apiview中使用