[컴][웹] Django Rest Framework 에서 parameter validation

parameter checking



Django Rest Framework 에서 parameter 를 검사(validation)


Serializer 를 만들면 된다. ref. 1 에 자세하게 나와있다. 아래 예제의 경우는 parameter 가 json 형식으로 들어오는 것을 가지고 만들었다. Rest Framework 에서 json 으로 들어오는 parameter 는 request.data 에 들어가 있게 된다.

그래서 이 request.data 를 Serializer 의 parameter 로 넘겨주면 된다.
그리고 Serializer 는 json 이 들어오는 모양을 보고 만들어 주면 된다. nested json 형식에 대한 부분은 고려하지 않았다. ref. 1 을 살펴보면 nested json 에 대한 이야기도 있다.



from rest_framework import serializers
from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView


class FactorsEarningRatioSerializer(serializers.Serializer):
    market = serializers.MultipleChoiceField(
        choices=['A', 'B'], allow_empty=False)
    portfolio_count = serializers.IntegerField(max_value=30)
    interval = serializers.ChoiceField(choices=['month', 'week', 'day'])
    factors = serializers.ListField()
    start = serializers.DateField(input_formats=['%Y/%m/%d'])


class FactorsEarningRatioView(APIView):

    """

    """

    authentication_classes = (SessionAuthentication, )
    permission_classes = (IsAuthenticated,)

    def post(self, request):
        """

        :param request:
            {
  market: ["A"]
  portfolio_count: 5
  interval: 'month'
  factors: ["f1", "f2"]
     }
        :return:
        """
        serializer = FactorsEarningRatioSerializer(data=request.data)
        if not serializer.is_valid():
            return Response(data={
                'error': {
                    'message': serializer.errors
                }
            }))

        return Response(data = {
                'success': {
                    'data': serializer.validated_data
                }
            })


Reference


  1. Serializers - Django REST framework
  2. Serializer fields - Django REST framework
  3. JSON schema validation with Django Rest Framework | Richard Tier

댓글 없음:

댓글 쓰기