Я пытаюсь перенаправить на другой URL-адрес из моего views.py после пользовательского ввода - представление фактически изменяется, но, к сожалению, URL-адрес браузера остается прежним.
urls.py:
path('start/', StartProject.as_view(), name='start_url'),
path('settings_1/', settings_1_view, name='settings_1_url'),
path('settings_2/', settings_2_view, name='settings_2_url'),
path('settings_3/', settings_3_view, name='settings_3_url'),
My views.py: Здесь я пытаюсь перенаправить пользователя на другую страницу после выбора.
views.py
class StartProject(TemplateView):
template = "start.html"
def get(self, request):
class_form = ClassChoiceForm(request.POST or None, initial={'class_select': 1})
context = {
'class_form': class_form
}
return render(request, self.template, context)
def post(self, request):
class_form = ClassChoiceForm(request.POST)
if class_form.is_valid():
choice = class_form.cleaned_data['class_select']
choice = int(choice)
if choice == 1:
return redirect('settings_1/')
elif choice == 2:
return redirect('/settings_2/')
elif choice == 3:
return redirect('/settings_3/')
else:
self.get(request)
else:
raise Http404
def settings_1_view(request):
context = {
}
template = "settings_1.html"
return render(request, template, context)
Выбор пользователя осуществляется с помощью переключателей, значение которых публикуется в views.py / При проверке значения в операторах if он должен перенаправлятьсяпользователь на выбранную страницу.(Мне нужен выбор пользователя для дальнейшего расчета)
POST template choice.html:
{% extends "base.html" %}
{% load staticfiles %}
{% load static %}
{% block title %} TITLE {% endblock %}
{% block content %}
<form id="post" method="POST" enctype="application/x-www-form-urlencoded">{% csrf_token %}
<div class='container-fluid'>
<center>
<div class="col align-self-center" style="min-width:700px; margin-bottom:90px; margin-top:30px; horizontal-align: center;">
<div class="row">
<div class="col-md-4" style="background-color:#fff">
<br>
<img src="{% static 'personal/img/item1.png' %}" class="responsive-img" style='max-height:170px; width:130px' alt="item1_image">
<p>Selection 1</p>
{{ class_form.class_select.0 }}
{{ class_form.class_select.errors }}
</div>
<div class="col-md-4" style="background-color:#fff">
<br>
<img src="{% static 'personal/img/item2.png' %}" class="responsive-img" style='max-height:170px; max-width:100px' alt="item2_image">
<p>Selection 2</p>
{{ class_form.class_select.1 }}
{{ class_form.class_select.errors }}
</div>
<div class="col-md-4" style="background-color:#fff">
<br>
<img src="{% static 'personal/img/item3.png' %}" class="responsive-img" style='max-height:170px;max-width:130px' alt="item3_image">
<p>Selection 3</p>
{{ class_form.class_select.2 }}
{{ class_form.class_select.errors }}
</div>
</div>
<div class="row">
<div class="col">
<center>
<button type="submit" style="width:200">Submit</button>
</center>
</div>
</div>
</div>
</center>
</div>
</form>
{% endblock content %}
forms.py
class ClassChoiceForm(forms.Form):
CHOICES = [
(1, 'item1'),
(2, 'item2'),
(3, 'item3')
]
class_select = forms.CharField(label=None, widget=forms.RadioSelect(choices=CHOICES))
Это действительно получение пользовательского ввода отформа принимает правильный путь, показывает его, но не изменяет связанный URL в браузере.Так что, если я обновлю страницу, старая будет загружена.У кого-нибудь есть идея ??
[After Redirect same URL:][1]
[1]: https://i.stack.imgur.com/NSso3.jpg