我在哪里可以在APIView中编写我的逻辑?

时间:2017-11-14 12:35:57

标签: python django django-rest-framework

CreateAPIView我可以覆盖create方法来添加我的逻辑:

class OpenstackAccountCreateAPIView(CreateAPIView):
    """
    create openstack account
    """
    serializer_class = OpenstackAccountCreateSerializer

    def create(self, request, *args, **kwargs):
        # put my logic here
        ......

但如果我有一个APIView,我在哪里可以写出我的逻辑?

class OpenstackAccountLoginAPIView(APIView):
    serializer_class = OpenstackAccountLoginSerializer
    # where can I put my login logic? 

我在Serializers.py中的OpenstackAccountLoginSerializer:

class OpenstackAccountLoginSerializer(Serializer):
    password = serializers.CharField()

2 个答案:

答案 0 :(得分:3)

你可以覆盖你想要的动词的方法。可能要创建一个您想要POST的帐户。像这样:

class OpenstackAccountLoginAPIView(APIView):
    serializer_class = OpenstackAccountLoginSerializer

    def post(self, request, format=None):
        # Logic goes here, defining resp with whatever you want to respond.
        return Response(resp)

您可以使用POST动词调用它,与使用文档here中的create CreateAPIView时相同。

答案 1 :(得分:0)

class OpenstackAccountLoginAPIView(APIView):
    serializer_class = OpenstackAccountLoginSerializer
    def get(self, request):
        """
        Return a list of all users.
        """
    def post(self, request):
        """
        Create users.
        """