Проверка формы и перенаправление во Flask без расширений (WTForms и т. д.)

Я искал и читал десятки сообщений, но пока не нашел ответа.

Я ищу способ проверить форму, оставаться на той же странице и отображать ошибку при сбое или отображать следующую html-страницу в случае успеха.

Моя текущая попытка: отправка формы в колбу, проверка и перенаправление. Скрытый фрейм предназначен для того, чтобы страница не обновлялась в случае сбоя проверки. По какой-то причине render_template не работает и err не отображается.

Python и Html (упрощенно):

@app.route("/", methods=['POST'])
def validate_form():
    print 
    if (format(request.form['q1']) != '1' or format(request.form['q2']) != '2 ):
        return render_template("index.html",err = "One of your answers are incorrect. Please check again.")
    else:
        return render_template("next_page.html")
<iframe name = "hiddenFrame" class = "hide"></iframe>

                <form name  = "quiz" method = "post" action = "/" target = "hiddenFrame">

                    <p>Who likes carrots?<br>
                    <input type = "radio" name = "q1" value = "1" checked>bunny<br>
                    <input type = "radio" name = "q1" value = "2">rabbit<br>
                    <input type = "radio" name = "q1" value = "3">beyonce<br>
                    </p>
                    <p>what is 1+1?<br>
                    <input type = "radio" name = "q2" value = "1" checked>10<br>
                    <input type = "radio" name = "q2" value = "2">1.<br>
                    <input type = "radio" name = "q2" value = "3">2<br>
                    </p>
                   
                <span class = "error">* {{err}}</span><br>             
                <input class = "button" name = "submit" type = "submit" value = "Submit" >
                </form>

Обновлено: Моя HTML-страница разделена на 3-4 суб-содержания, где вы нажимаете кнопки «следующий» и «предыдущий», чтобы перемещаться по ним. Когда пользователь отправляет форму, мне нужно, чтобы она оставалась в том же суб-контенте, поэтому я использовал скрытый фрейм для перенаправления обратно на него через html. Я полагаю, что какое-то решение, которое я сделал, не работает должным образом с точки зрения отображения страницы ...

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
928
1

Ответы 1

Во-первых, вы захотите обернуть ваши текущие операторы if в общую

if flask.request.method == POST: 

Это активирует код при его публикации.

Затем вы захотите использовать вспышки для сообщений, отображаемых, если информация неверна. Погуглите, и вы сможете найти быстрый шаблон для использования.

Вы правы с упаковкой, но моя функция принимает только запросы POST. Код работает. Строки, которые не работают, - это render_template / redirect. Я уверен, что мне что-то не хватает, возможно, в логике flask + python + html, но вся эта тема для меня нова, поэтому у меня не было времени глубоко изучить ее связи.

John Smith 08.11.2018 17:48

Взгляните на ссылку ниже. Это должно помочь в том, что вы хотите делать. flask.pocoo.org/docs/1.0/patterns/flashing

Tom Mitchell 08.11.2018 18:11

Две вещи. 1) Попробуйте добавить render_template с помощью flask. (flask.render_template) и 2) Можете ли вы сделать репост о том, что у вас сейчас есть. И py, и html

Tom Mitchell 08.11.2018 18:19

Это действительно все, что у меня есть ... Я удалил из исходного кода дополнительные кнопки ввода, отладочную печать и т. д. Позвольте мне добавить кое-что о моем html, которое, как я считаю, может привести к ответу. проверь мое редактирование

John Smith 08.11.2018 19:10

Я ничего не вижу в вашем коде о вспышках, поэтому я ничего не могу с этим поделать.

Tom Mitchell 08.11.2018 19:13

Извините за задержку. Раньше я делал пару вещей с флеш-сообщениями, и я пробовал то же самое здесь, прежде чем пришел с просьбой о решении. Я также попробовал еще раз, когда вы посоветовали мне

John Smith 08.11.2018 22:28

Другие вопросы по теме