Я искал и читал десятки сообщений, но пока не нашел ответа.
Я ищу способ проверить форму, оставаться на той же странице и отображать ошибку при сбое или отображать следующую 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. Я полагаю, что какое-то решение, которое я сделал, не работает должным образом с точки зрения отображения страницы ...






Во-первых, вы захотите обернуть ваши текущие операторы if в общую
if flask.request.method == POST:
Это активирует код при его публикации.
Затем вы захотите использовать вспышки для сообщений, отображаемых, если информация неверна. Погуглите, и вы сможете найти быстрый шаблон для использования.
Взгляните на ссылку ниже. Это должно помочь в том, что вы хотите делать. flask.pocoo.org/docs/1.0/patterns/flashing
Две вещи. 1) Попробуйте добавить render_template с помощью flask. (flask.render_template) и 2) Можете ли вы сделать репост о том, что у вас сейчас есть. И py, и html
Это действительно все, что у меня есть ... Я удалил из исходного кода дополнительные кнопки ввода, отладочную печать и т. д. Позвольте мне добавить кое-что о моем html, которое, как я считаю, может привести к ответу. проверь мое редактирование
Я ничего не вижу в вашем коде о вспышках, поэтому я ничего не могу с этим поделать.
Извините за задержку. Раньше я делал пару вещей с флеш-сообщениями, и я пробовал то же самое здесь, прежде чем пришел с просьбой о решении. Я также попробовал еще раз, когда вы посоветовали мне
Вы правы с упаковкой, но моя функция принимает только запросы POST. Код работает. Строки, которые не работают, - это render_template / redirect. Я уверен, что мне что-то не хватает, возможно, в логике flask + python + html, но вся эта тема для меня нова, поэтому у меня не было времени глубоко изучить ее связи.