Два запроса на публикацию на одной HTML-странице

#python #html #flask

#питон #HTML #колба

Вопрос:

У меня есть веб-страница, которая должна позволять пользователю выполнять поиск в базе данных, вводя имя элемента, или собирать все элементы определенной категории.

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

введите описание изображения здесь

Вот моя функция python для поиска. Однако я еще не включил код для запроса на публикацию «Поиск по категориям».

 @app.route("/search/", methods = ["GET", "POST"]) def search():  if request.method == "POST":  searchQuery = request.form  query = searchQuery['query']  results = SqlFunctions.searchName(mycursor, query)  return render_template("search.html", results = results)   # pseudo code for what the other POST request might look like  # if request.method == 'POST':  # searchQuery = request.form  # query = searchQuery['query']  # results = SqlFunctions.searchCategory(mycursor, query)  # return render_template("search.html", results = results)   return render_template("search.html", results = None)  

Вот мой HTML-код для страницы поиска

 {% extends "master.html"%} {% block main %} lt;form class="form" action="" method="POST"gt;  lt;divgt;  lt;div class="banner"gt;  lt;h1gt;Find Your Expenses Easilylt;/h1gt;  lt;/divgt;  lt;br /gt;  lt;div class="row"gt;  lt;div class="column"gt;  lt;div class="item"gt;  lt;label for="fname"gt;Search by item namelt;spangt;*lt;/spangt;lt;/labelgt;  lt;input id="fname" type="text" name="query"/gt;  lt;/divgt;  lt;span id="result"gt;lt;/spangt;  lt;formgt;  lt;button type="submit" id="calc" value="sName"gt;Submitlt;/buttongt;  lt;/formgt;  lt;/divgt;  lt;div class="column"gt;  lt;div class="item"gt;  lt;label for="fname"gt;Search by item categorylt;spangt;*lt;/spangt;lt;/labelgt;  lt;br /gt;  lt;select name="query"gt;  lt;option selected value="" disabled selectedgt;lt;/optiongt;  lt;option value="1" {% if category is defined and category =='Groceries' %} selected="selected" {%endif%}gt;Grocerieslt;/optiongt;  lt;option value="2" {% if category is defined and category =='Transportation' %} selected="selected" {%endif%}gt;Transportationlt;/optiongt;  lt;option value="3" {% if category is defined and category =='Entertainment' %} selected="selected" {%endif%}gt;Entertainmentlt;/optiongt;  lt;option value="4" {% if category is defined and category =='Rent' %} selected="selected" {%endif%}gt;Rentlt;/optiongt;  lt;option value="5" {% if category is defined and category =='Utilities' %} selected="selected" {%endif%}gt;Utilitieslt;/optiongt;  lt;option value="6" {% if category is defined and category =='Gifts' %} selected="selected" {%endif%}gt;Giftslt;/optiongt;  lt;option value="7" {% if category is defined and category =='Personal' %} selected="selected" {%endif%}gt;Personallt;/optiongt;  lt;option value="8" {% if category is defined and category =='Other' %} selected="selected" {%endif%}gt;Otherlt;/optiongt;  lt;/selectgt;  lt;/divgt;  lt;span id="result"gt;lt;/spangt;  lt;formgt;  lt;button type="submit" id="calc" value="sCategory"gt;Submitlt;/buttongt;  lt;/formgt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  {% if results is not none %}  lt;divgt;  {% include "table.html" %}  {% endif %}  lt;/divgt; lt;/formgt;  {% endblock %}  

Ответ №1:

Я обычно использую две формы и вместо того, чтобы делать:

 if request.method == "POST":  

Я делаю что-то вроде этого (кстати, я использую WTForms):

 if form1.validate_on_submit():  # process the first form data if form2.validate_on_submit():  # process the second form data