Django Rest Framework에서 serializer에서 각 필드에 대한 validation 로직을 추가할 수 있습니다. 검증을 위한 메서드 명은 validate_필드이름
라고 작성하고 검증할 로직을 구현하면 됩니다.
예
간단한 방 정보를 다루는 예시를 통해서 사용법을 설명하겠습니다.
모델
class Room(model.Model):
name = models.CharField(max_length=100)
price = models.PositiveIntegerField()
description = models.TextField()
시리얼라이저
class RoomSerializer(serializers.ModelSerializer):
class Meta:
model = Room
fields = ["name", "price", "description"]
def validate_name(self, value):
if len(value) < 3:
raise serializers.ValidationError("방 이름은 최소 3글자 이상이어야 합니다.")
return value
def validate_price(self, value):
if value < 0:
raise serializers.ValidationError("가격은 음수일 수 없습니다.")
return value
이 예시에서는 Room
모델을 정의하고, 이를 시리얼라이저로 변환하는 RoomSerializer
를 만들었습니다. RoomSerializer
는 Room
모델과 연결되어 있습니다.
RoomSerializer
내부에서 validate_name
메소드와 validate_price
메소드를 정의했습니다.
validate_name
메소드는name
필드의 값을 검증합니다. 만약 이름이 3글자 미만이면serializers.ValidationError
을 발생시켜 에러를 일으킵니다.validate_price
메소드는price
필드의 값을 검증합니다. 만약 가격이 음수라면 마찬가지로 에러를 발생시킵니다.
이런 식으로 각 필드에 대한 검증 로직을 추가할 수 있습니다. 이제 이 시리얼라이저를 사용하면, 입력된 데이터가 검증되고 필요한 처리가 이루어집니다.
serializer = RoomSerializer(data=data)
if serializer.is_valid():
# 유효한 경우, 데이터를 저장하거나 다른 처리를 할 수 있습니다.
room = serializer.save()
else:
# 유효하지 않은 경우, 에러 메시지를 확인할 수 있습니다.
errors = serializer.errors
이렇게 하면 시리얼라이저를 통해 데이터를 검증하고 처리할 수 있습니다.
'Python > Django' 카테고리의 다른 글
세션과 쿠키를 이용한 Django 인증 시스템 (0) | 2023.12.06 |
---|---|
Django의 사용자 인증 및 관리를 위한 유틸리티 함수 (1) | 2023.11.26 |
Django 소유자 여부 확인(DRF) (0) | 2023.08.28 |
Serializer에서 method 사용하기 (0) | 2023.08.27 |
Django에서의 Transactions (0) | 2023.08.26 |