Dajngo: Как перенаправить пользователя на прошлую страницу после регистрации?
Для покупки товара есть 4 шага. Если пользователь не зарегистрирован, то после второго шага его должно перенаправить на страницу регистрации. А когда он зарегистрируется, то его должно перенести на третий шаг. Как можно реализовать данную логику? (В моем случае после регистрации его переносит на главную страницу, а должно на третий шаг)

views.py ( Это обработчик второго шага )
class NewTrackingSubscriptions(DataMixin, TemplateView):
template_name = 'profiles/new-tracking-subscription.html'
def get(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return redirect('login_user')
return render(request, 'profiles/new-tracking-subscription.html', self.get_context_data())
views.py ( Это обработчик регистрации пользователя )
class SignupUser(CreateView):
form_class = RegisterForm
template_name = 'account/signup.html'
def form_valid(self, form):
user = CustomUser.objects.create_user(email=self.request.POST['email'],
first_name=self.request.POST['first_name'],
last_name=self.request.POST['last_name'],
password=self.request.POST['password'])
user.save()
login(self.request, user)
return redirect('index')
В контексте для формы регистрации передавайте параметр return_to_url любым из способов.
В форме добавьте поле
<input type="hidden" name="return_to" value="{{ return_to_url }}">
Либо можно поступить даже вот так:
<input type="hidden" name="return_to" value="{{ request.META.HTTP_REFERER }}">
В таком случае будет возвращаться всегда на тут страницу, с которой форма была вызвана. Учтите, что если например форма окажется не валидной хотя бы раз - редирект будет на саму форму. Так что лучше первый способ с "ручной" передачей контекста.
Тогда у Вас будет такая views:
class SignupUser(CreateView):
form_class = RegisterForm
template_name = 'account/signup.html'
def form_valid(self, form):
user = CustomUser.objects.create_user(email=self.request.POST['email'],
first_name=self.request.POST['first_name'],
last_name=self.request.POST['last_name'],
password=self.request.POST['password'])
user.save()
login(self.request, user)
return redirect(request.POST['return_to']))