如何限制HTTP方法到Django REST api
问题描述:
我如何将基于功能的视图中的修饰器修改为基于类的视图中的api_view?我的要求是,我要限制HTTP访问方法,比如GET,POST,PUT等,以特定的API如何限制HTTP方法到Django REST 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']
答
您应该使用APIView。只有你在课堂上定义的方法是允许的。在这个只允许和允许的地方。
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)