Request and Response | DRF

前言: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)
]

猜你喜欢

转载自www.cnblogs.com/pymkl/p/10571313.html