Serializers의 create()에서 ValidationError 발생 중지

Django로 작업하고 배울 때도 비슷한 코드를 읽고 쓰기도 했습니다.

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ["username", "password", "email"]

    def create(self, validated_data):
        username = validated_data.get("username")

        if username:
            try:
                User.objects.get(username=username)
                raise ValidationError({"user": "This user already exists."})
            except ObjectDoesNotExist:
                pass
        return User.objects.create(**validated_data)


실제로 코드에 어떤 문제가 있습니까?
글쎄, 우리는 create() 또는 validate() 메서드에서 데이터 유효성 검사 작업을 수행하는 대신 validate_field() 메서드에서 ValidationError를 발생시키고 있습니다. 🥶

그 의미는 무엇입니까?🤔



우선, 우리는 DRF 규칙을 위반하고 잘못된 코드를 작성하고 있습니다. 문자 그대로 이 작업을 수행하기 위해 추가 요금을 부과할 수 있는 기능이 있지만 사용되지 않는다는 사실은 꽤 나쁜 패턴입니다.

둘째, 성능 문제입니다. 데이터의 유효성 검사는 실제로 데이터 생성, 업데이트 및 삭제 전에 이루어집니다.validate() 또는 validate_field() 메서드에 데이터 유효성 검사를 작성하면 CRUD 메서드를 훨씬 빠르게 만들 수 있습니다.🚀

bloggu.io을(를) 사용하여 게시된 기사. 무료로 사용해 보세요.

좋은 웹페이지 즐겨찾기