На чем делаешь валидацию входных данных в DRF
Python
Middle
Баланс-Платформа
На чем делаешь валидацию входных данных в DRF
Ответы
В DRF валидацию входных данных можно делать несколькими способами, в зависимости от уровня контроля:
- **Поля сериализатора** – базовый уровень. Используются встроенные валидаторы (`max_length`, `required` и т. д.) или кастомные через `validators=[]`.
```
from rest_framework import serializers
class UserSerializer(serializers.Serializer):
email = serializers.EmailField()
age = serializers.IntegerField(min_value=18)
```
- **Метод `validate_<field>`** – для проверки конкретного поля.
```
def validate_age(self, value):
if value > 100:
raise serializers.ValidationError("Age too high")
return value
```
- **Метод `validate()`** – для комплексной проверки нескольких полей.
```
def validate(self, data):
if data["start_date"] > data["end_date"]:
raise serializers.ValidationError("Dates are invalid")
return data
```
- **Валидаторы уровня модели** – если данные сохраняются в БД, можно добавить `validators` в модель (например, `RegexValidator`).
Для сложной логики иногда выносят валидацию в отдельные классы или используют сторонние библиотеки (например, `pydantic`).