Зачем использовать Pydantic с Django?

<

Я хочу внедрить Pydantic в свое приложение на Django (для обучения и собеседования), но мне интересно, зачем это делать? Почему я должен использовать проверку данных в таких вещах, как модели Django, когда сами поля уже имеют объявленные типы? Есть ли другие случаи в приложении Django, когда имеет смысл использовать проверку данных? Пожалуйста, будьте добры в своих ответах. Мне искренне любопытно и я спрашиваю честно.

Pydantic - это библиотека Python, используемая для сериализации и проверки данных. Давайте начнем с примера. Вы создаете проект с помощью фреймворка django rest. Теперь вы создаете API регистрации, чтобы хранить некоторые данные, такие как (имя пользователя, фамилия, имя, телефон, электронная почта) в базе данных. Теперь вы говорите, что я добавляю в модель некоторый необходимый мат типа(length="",null=True......), но если вы сделаете некоторую валидацию в вашем serializers.py, это поможет сделать данные сохраненными так, как вы хотите .

Пример:

в models.py

phone  =  models.charfiled(max_length=15)

и

в serializers.py

len(phone) != 10: ---> when you enter phone digit (x)---->>x<10>x in case fetching some error 

Чтобы сэкономить время, введите такой символ, как --989944asdsd

в это время они сохраняют его, но при проверке добавляют, что время идеальное, вводят только цифру.

Надеюсь, вы поняли.

Pydantic не имеет пересекающихся вариантов использования с Django Models. У него есть пересекающиеся варианты использования с Django Forms.

Django models позволяет выполнять валидацию на уровне базы данных/модели, но models не делает никакого разбора сериализованных данных и не выдает сообщения об ошибках в форме, которую можно использовать для клиентов.

Кроме того, многие проверки модели выполняются через проверки базы данных, а проверка на валидность базы данных требует отправки запроса в базу данных, возникновения ошибок ограничений, а затем возврата состояния курсора базы данных через точку сохранения/атомный блок. Такая стратегия восстановления в базе данных является дорогостоящей, а база данных - самый трудно масштабируемый компонент. Кроме того, базы данных обычно не выдают никаких сообщений об ошибках, которые можно было бы передать пользователю; их сообщения об ошибках обычно ссылаются на имена внутренних полей базы данных, а ошибка может просто ссылаться на имя проверяемых ограничений.

Вместо этого, общая стратегия в Django-приложениях обычно заключается в предварительной валидации как можно большего количества данных на прикладном уровне, используя Django Forms, перед отправкой запроса, который в основном уже должен быть валидным, в базу данных. Это уменьшает количество ошибок, которые может выдать база данных, до таких, как ошибки уникальных ограничений, которые невозможно проверить на уровне приложения.

Pydantic не имеет пересекающейся функциональности с Django Models. Его функциональность больше пересекается с Django Forms.

Почему вы можете захотеть использовать Pydantic в Django-приложении? Django Form в значительной степени ориентирован на работу с HTML-формами. Если ваше приложение обслуживает API, Pydantic может быть менее неудобным, чем Django Forms.

Pydantic выполняет парсинг, согласование типов, валидацию и сериализацию для произвольно вложенных JSON и диктоподобных объектов. Forms тоже делает все это, но только для плоского словаря.

Однако более распространенным вариантом для работы с API в Django являются сериализаторы Django REST Framework. DRF гораздо лучше интегрирован с остальной частью Django.

На практике, если вы используете Pydantic в проекте Django, гораздо более вероятно, что вы не используете его для замены форм или моделей, а скорее используете его, когда вам нужно подтвердить данные в других местах, например, при выполнении JSON API запросов к другим API или не-ORM базе данных, или для разбора локальных файлов.

Вернуться на верх