前言:RestFramework在请求与响应上扩展了原有的HttpRequest与HttpResponse,提供Request对象与Response对象。
区别:1.原request.POST只处理表单数据,仅用于POST方法,现request.data处理任意数据,可以用于POST/PUT/PATCH方法。
2.Response(data)按照客户的内容需求类型来渲染内容。
3.为每一个状态码提供更明确的标识符。
使用:
from .serializers import ProcessSerializer from rest_framework.response import Response from rest_framework import status from rest_framework.decorators import api_view @api_view(["GET", "POST"]) # 确保在视图中厚的Request对象,在Response对象中添加上下文。 def process_list(request): """ 列出所有process,或者创建一个process :param request: :return: """ if request.method == "GET": process = Process.objects.all() serializer = ProcessSerializer(process, many=True) return Response(serializer.data) elif request.method == "POST": serializer = ProcessSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @api_view(["GET", "PUT", "DELETE"]) def process_detail(request, pk): """ 查找、更新或删除process :param request: :return: """ try: process = Process.objects.get(pk=pk) except Process.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == "GET": serializer = ProcessSerializer(process) return Response(serializer.data) elif request.method == "PUT": serializer = ProcessSerializer(process, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) elif request.method == "DELETE": process.delete() return Response(status=status.HTTP_204_NO_CONTENT)urlpatterns = [ url(r'^process_list/$', process_list), url(r'^process_detail/(\d+)$', process_detail) ]