当前位置: 代码迷 >> python >> 如何将http方法限制为Django REST api
  详细解决方案

如何将http方法限制为Django REST api

热度:88   发布时间:2023-06-13 20:23:50.0

如何将基于函数的视图中的api_view装饰器更改为基于类的视图? 我的要求是,我想将HTTP访问方法(如GET,POST,PUT等)限制为特定的API

@api_view(['GET', 'POST'])
def hello_world(request):
    if request.method == 'POST':
        return Response({"message": "Got some data!", "data": request.data})
    return Response({"message": "Hello, world!"})

希望有人知道答案.....

您可以使用如下的http_method_names ,并希望您使用ModelViewSet类。

class UserView(viewsets.ModelViewSet):
    queryset = UserModel.objects.all()
    serializer_class = UserSerializer
    http_method_names = ['get']

你应该使用API??View。 只允许在类中定义的方法是允许的。在此只允许get和post。

from rest_framework.views import APIView

class SnippetList(APIView):
"""
List all snippets, or create a new snippet.
"""
def get(self, request, format=None):
    snippets = Snippet.objects.all()
    serializer = SnippetSerializer(snippets, many=True)
    return Response(serializer.data)

def post(self, request, format=None):
    serializer = SnippetSerializer(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)

您还可以使用基于通用类的视图。 它们只提供适当的http方法处理程序,例如generics.RetrieveAPIView只允许GET请求。 列出了通用视图及其支持的方法。

  相关解决方案