欢迎访问宙启技术站
智能推送

利用Response()在DjangoRESTframework中实现不同响应状态码

发布时间:2023-12-29 01:17:26

在Django REST Framework中,可以使用Response()函数来实现不同的响应状态码。Response()函数接受两个参数:datastatus。其中,data参数是要返回的数据,status参数是响应状态码。

下面是一些使用Response()函数实现不同响应状态码的示例:

1. 成功响应:

from rest_framework.response import Response

def success_view(request):
    data = {"message": "Success"}
    return Response(data, status=200)

2. 创建资源成功:

def create_view(request):
    # 处理创建资源的逻辑
    if create_success:
        data = {"message": "Resource created"}
        return Response(data, status=201)
    else:
        data = {"message": "Failed to create resource"}
        return Response(data, status=400)

3. 资源不存在:

def detail_view(request, id):
    try:
        # 查询资源
        resource = Resource.objects.get(id=id)
        return Response({"resource": resource.serialize()}, status=200)
    except Resource.DoesNotExist:
        return Response({"error": "Resource not found"}, status=404)

4. 身份验证失败:

from rest_framework.permissions import IsAuthenticated

class ProtectedView(APIView):
    permission_classes = [IsAuthenticated]
    
    def get(self, request):
        return Response({"message": "Authenticated"}, status=200)

5. 请求方法不允许:

def view(request):
    if request.method == "POST":
        return Response({"message": "POST method not allowed"}, status=405)
    else:
        return Response({"message": "Method not allowed"}, status=405)

6. 服务不可用:

def view(request):
    # 处理服务逻辑
    if service_available:
        return Response({"message": "Service available"}, status=200)
    else:
        return Response({"message": "Service unavailable"}, status=503)

以上是一些使用Response()函数实现不同响应状态码的例子。根据需要选择适当的响应状态码,以提供有意义的响应给客户端。