Python 在django rest框架中自定义视图句柄POST和DELETE方法
我创建了一个可以处理POST和DELETE方法的视图Python 在django rest框架中自定义视图句柄POST和DELETE方法,python,django,django-rest-framework,Python,Django,Django Rest Framework,我创建了一个可以处理POST和DELETE方法的视图 class MyView(APIView): def valid_method(self,data): method = self.request.method if method == 'POST': ser = self.PostSerializer(data=data) elif method == 'DELETE':
class MyView(APIView):
def valid_method(self,data):
method = self.request.method
if method == 'POST':
ser = self.PostSerializer(data=data)
elif method == 'DELETE':
ser = self.DeleteSerializer(data=data)
else:
raise MethodValidationError(errormessage)
return ser
def post(self, request):
ser = self.valid_method(dara = request.data)
other code
def delete(self, request):
ser = self.valid_method(dara = request.data)
other code
有没有更好的方法来实现MyView?我应该创建一个新的基础视图吗?或者有什么简单的方法可以在APIView中定义合法的HTTP方法吗?使用(继承自APIView),它提供了一些方法,例如get\u serializer\u class
,在这些方法中,您可以实现方法valid\u method
中的逻辑
示例:
from rest_framework.generics import GenericAPIView
class CustomGenericAPIView(GenericAPIView):
serializer_class = None
def get_serializer_class(self, *args, **kwargs):
request_method = self.request.method
if request_method == "POST":
return self.PostSerializer
elif request.method == "DELETE":
return self.DeleteSerializer
else:
return super().get_serializer_class(*args, **kwargs)
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
# rest of the code