как перенаправить пользователя в другое представление после заполнения формы django? - PullRequest
0 голосов
/ 26 мая 2020

Я создал форму из django и перенаправлял пользователя на другую страницу своего приложения (другой URL-адрес), как только пользователь заполнил форму. Форма находится в URL-адресе 'data / celia c' ('celia c. html'), и я хотел бы перенаправить его на URL-адрес 'data / cdr3'. После написания следующего кода, когда пользователь заполняет форму, он перенаправляется на тот же URL-адрес data / celia c. Что мне следует изменить в моем коде, чтобы меня перенаправили на URL-адрес data / cdr3? CeliacViews:

def CeliacView(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
    # create a form instance and populate it with data from the request:
    form = forms.CeliacForm(request.POST)
    # check whether it's valid:
    if form.is_valid():
        # process the data in form.cleaned_data as required
        columns = form.cleaned_data['columns']
        algo = form.cleaned_data['algo']
        context = {'form': forms.Cdr3Form()}
        return render(request, 'data/cdr3.html', context)
else:
    tableData = get_table_data_to_representation()
    context = {'form': forms.CeliacForm(), 'tableData': tableData}
    return render(request, 'data/celiac.html', context)

Cdr3Views:

def Cdr3View(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
    # create a form instance and populate it with data from the request:
    my_form = forms.Cdr3Form(request.POST)
    # check whether it's valid:
    if my_form.is_valid():
        # process the data in form.cleaned_data as required
        kmers = my_form.cleaned_data['kmers']
        threshold = my_form.cleaned_data['threshold']
        learning_rate = my_form.cleaned_data['learning_rate']
        epochs = my_form.cleaned_data['epochs']
        split = my_form.cleaned_data['split']

        # TODO: Call data and run machine learning model
        x_dataset, y_dataset = get_dataset_celiac(int(kmers))
        train_x, train_y, test_x, test_y = split_data(int(split), x_dataset, y_dataset)
        parameters, v, m = initialization_of_parameters(int(kmers))
        train_results = train(parameters, v, m, epochs, learning_rate, threshold, train_x, train_y)
        data_for_report = test(test_x, test_y, threshold, train_results)
        fig = presentation_of_results(data_for_report)
        buf = io.BytesIO()
        fig.savefig(buf, format='PNG', bbox_inches='tight')
        buf.seek(0)
        string = base64.b64encode(buf.read())
        image = parse.quote(string)
        return render(request, 'data/cdr3Results.html', {'data': image})

# if a GET (or any other method) we'll create a blank form
else:
    context = {'form': forms.Cdr3Form()}
    return render(request, 'data/cdr3.html', context)

И urls.py:

from django.urls import path
from . import views

app_name = 'data'
urlpatterns = [
   path('datasets/', views.SetView, name='datasets'),
   path('celiac/', views.CeliacView, name='celiac'),
   path('cdr3/', views.Cdr3View, name='cdr3'),
   path('cdr3results/', views.Cdr3Results, name='cdr3Results')
   ]

мой шаблон celia c. html:

<form method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Save">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...