Должны ли мы использовать аутентификацию django для всех пользователей сайта?
Я только начал разрабатывать сайт книжного магазина на Django, и у меня возник вопрос об аутентификации пользователей. Я хочу, чтобы у пользователей был кошелек, корзина и дополнительная информация для их аккаунта, такая как фотография профиля, номер телефона, адрес и т.д. для покупки книг.
Теперь я стою перед дилеммой: изменить саму модель User, или создать модель Profiles для каждого и связать ее с моделью User, или создать отдельную модель (другими словами, систему аутентификации) и сделать все с нуля.
Теперь я начал строить отдельную систему аутентификации. Все шло хорошо, пока у меня не возникли проблемы с отправкой и получением пользовательских данных в шаблоне contexets.
Наконец, в целом, я хочу знать, действительно ли система аутентификации Django подходит для всех пользователей сайта?
Если стандартная модель Django User
не содержит всего, что вам нужно, вы всегда можете расширить ее своей собственной моделью. В документации Django это описано с некоторыми примерами здесь: https://docs.djangoproject.com/en/4.0/topics/auth/customizing/#extending-the-existing-user-model
Расширяя модель User
, вы можете добавить дополнительные поля и/или функции к модели User
(например, вы можете добавить изображение, описание, возраст, статус отношений и т.д.).
После этого я действительно рекомендую использовать бэкенд аутентификации Django. Он хорошо протестирован и безопасен.
Django - один из самых закаленных в боях и хорошо протестированных фреймворков, поэтому встроенная аутентификация более чем приемлема. В Документах есть обзор, с руководством по расширению.
Вы можете провести оценку пакетов сторонних производителей, связанных с аутентификацией здесь, и сделать вывод о том, подходит ли какой-либо из этих пакетов для вашего случая использования в электронной коммерции.
Что касается модели пользователя, широко распространено мнение, что лучшей практикой является начало проекта с пользовательской моделью пользователя (т.е. до первой миграции). В официальных документах это даже указано, однако некоторые люди все еще предпочитают "старый" способ, который заключается в создании отдельной модели профиля "один к одному".
Здесь есть руководство о начале проекта с пользовательской моделью пользователя. Здесь о том, как изменить модель в середине проекта.