Почему Django views.py перенаправляет на другой вид без изменения URL? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь перенаправить на другой 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
...