vikkyshostak
@vikkyshostak
< This head full of dreams.

Django. Как зарегистрировать посетителя (гостя), после отправки формы заказа?

Доброго времени!

Есть Django 1.11.5 с переопределённой моделью пользователя (client). Авторизация происходит по email + пароль, убраны некоторые поля в админке, но в остальном – стандартная модель юзера из Django (использую AbstractUser). Также, есть приложение (order_form) с множеством полей, которое могут заполнять как гости, так и авторизованные посетители сайта.

Как сделать так, чтобы при отправке этой формы, если посетитель ГОСТЬ (не авторизован) и у него ещё НЕТ учётной записи на сайте (проверка по email), то его автоматически регистрировало (с email, который он указал в форме и рандомно-сгененированным паролем + отправка письма с этими данными на почту)?

Также, хотелось бы сразу же делать редирект на его личный кабинет + авторизовывать этого пользователя, используя его email и тот сгенерированный пароль.

Буду рад любой помощи.
  • Вопрос задан
  • 372 просмотра
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
Если оставить за бортом спорные моменты в таком процессе, то:

Автоматическое создание пользователя
У стандартного UserManager'а есть метод create_user. Если у вас переопределённая модель пользователя, проследите, чтобы UserManager для вашей модели был актуальный. Если вы меняли поля, которые фигурируют в этом методе, возможно, вам потребуется создать свой UserManager на основе стокового.

Аутентификация пользователя
Залогинить пользователя, на удивление, совсем легко, есть функция login

Ну а редирект (на ЛК) после создания пользователя и его успешного логина вы, наверное, знаете как сделать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AnneSmith
самая ленивая
по факту получится, что вы отправляете пароль и возможно персональные данные по непроверенному емейл адресу
люди делают ошибки, и прежде чем создавать эккаунт и высылать пароли, этот емейл нужно подтвердить
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы