Я новичок в Python flask и концепции веб-сервера в целом, но мне удалось создать простое веб-приложение.
В основном он состоит из домашней страницы с формой для заполнения и кнопкой отправки, которая возвращает мигающие сообщения, когда: 1) все поля заполнены правильно и 2) не все поля заполнены.
Мой код выглядит так:
@app.route('/', methods = ['GET', 'POST'])
def home():
form = preference_form(request.form)
print(form.errors)
if request.method == 'POST':
name = request.form['name']
age = request.form['age']
address = request.form['distance']
date = request.form['date']
if form.validate():
flash('All good!')
else:
flash('Oops! All details are required to provide accurate results!')
return render_template('home.html', form = form)
@app.route('/results', methods = ['POST'])
def return_results():
name = request.form.get('name')
age = request.form.get('age')
address = request.form.get('address')
result = function_a(name=name,
age=age,
address=address)
return result
Флэш-сообщения работали как надо, но после того, как я добавил маршрут return_results()
, после заполнения формы (полной или неполной) я попал прямо на /results
.
Не могли бы вы сказать мне, что я здесь упускаю?
Спасибо!
У меня есть что-то подобное в моем шаблоне. Как я упоминал в своем вопросе, до того, как я добавил функцию
return_results()
, флэш-сообщения возвращались, как и ожидалось, но не после того, как я добавил эту функцию.Ваша функция просмотра
return_results
ничего не показала.И вы не отрендерили в нем файл шаблона.
Вы предлагаете поместить строки, где он проверяет форму и возвращает флэш-сообщения в
home()
вместоreturn_results()
? И если это так, то, конечно, требуется добавить рендеринг файла шаблона вreturn_results()
?Все зависит от вашего дизайна вашего приложения. Если мы можем закончить сбор информации в одной функции представления (конечная точка), зачем нам вторая (
/resutls
).как я уже упоминал, мои знания об этом ограничены, и мое обоснование наличия другой конечной точки заключается в том, что я представляю что-то вроде поиска Google, после того как я отправлю свой поисковый запрос, он вернет новую страницу, содержащую результаты.
@ user7799677 Я обновил свой ответ. Вы можете завершить свою функцию только с одной функцией просмотра.