vikkyshostak
@vikkyshostak
< This head full of dreams.

Как не потерять данные при отправке формы (вьюха с LoginRequiredMixin), если пользователь не авторизован?

Доброго времени года.

Поставили задачу сделать хитрый механизм отправки заявки с сайта (около 10 полей) для пользователей. А именно, если посетитель НЕ авторизован, то направлять его на страницу логина и регистрации (там две формы рядышком), но при его входе/регистрации — присоединять к нему все данные, которые он заполнял в форме.

Подобный механизм можно наблюдать почти во всех современных интернет-магазинах (Юлмарт, например), когда вначале накидываешь всё в корзину, оформляешь доставку, выбираешь способ оплаты, а только потом говорят — «а теперь давайте зарегистрируемся или войдём на сайт, если уже зарегистрированы» и только после этих действий — заказ улетает на сервер, как «оформленный заказ».

Мне не нужен код или (возможно) готовые библиотеки, которые это делают из коробки. Я буду рад хотя бы алгоритму (из продакшена), юзкейсам и\или советам тех, кто реализовывал подобное на Django.

Также, взываю к Django-гуру: поясните, пожалуйста, верно ли я понимаю, когда происходит переход НЕ авторизованного посетителя на вьюху с LoginRequiredMixin (class-based), то можно передавать не только next параметр для URL, но и сохранять (в сессии/куках?) какие-то ещё данные?

Возможно, это и есть разгадка для моей задачи, но хочется услышать более авторитетное мнение Django-практиков, а не свои догадки :)

Заранее спасибо.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 2
rSedoy
@rSedoy
Python/Django
Положить данные в request.session, когда нужно взять оттуда. Или создавать такого юзера автоматически, со временем удалять таких, которые не прошли дальше (не зарегистрировались).
Ответ написан
tema_sun
@tema_sun
Я бы в localStorage сохранял данные из формы по мере ее заполнения, а после ее удачной отправки очищал бы хранилище. Это еще и в случае рефреша страницы любым пользователем поможет.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы