一个 HTML 页面上的两个 POST 请求
Two POST requests on one HTML page
我有一个网页应该允许用户通过输入项目名称来搜索数据库,或者收集特定类别的所有项目。
我想这涉及两个 POST 请求,虽然我有搜索项目名称的功能,但我不知道如何创建第二个 POST在同一 html 页面中请求按类别搜索功能。任何帮助将不胜感激。
这是我的 python 搜索功能。不过,我还没有为“按类别搜索项目”POST 请求添加任何代码。
@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 %}
<form class="form" action="" method="POST">
<div>
<div class="banner">
<h1>Find Your Expenses Easily</h1>
</div>
<br />
<div class="row">
<div class="column">
<div class="item">
<label for="fname">Search by item name<span>*</span></label>
<input id="fname" type="text" name="query"/>
</div>
<span id="result"></span>
<form>
<button type="submit" id="calc" value="sName">Submit</button>
</form>
</div>
<div class="column">
<div class="item">
<label for="fname">Search by item category<span>*</span></label>
<br />
<select name="query">
<option selected value="" disabled selected></option>
<option value="1" {% if category is defined and category =='Groceries' %} selected="selected" {%endif%}>Groceries</option>
<option value="2" {% if category is defined and category =='Transportation' %} selected="selected" {%endif%}>Transportation</option>
<option value="3" {% if category is defined and category =='Entertainment' %} selected="selected" {%endif%}>Entertainment</option>
<option value="4" {% if category is defined and category =='Rent' %} selected="selected" {%endif%}>Rent</option>
<option value="5" {% if category is defined and category =='Utilities' %} selected="selected" {%endif%}>Utilities</option>
<option value="6" {% if category is defined and category =='Gifts' %} selected="selected" {%endif%}>Gifts</option>
<option value="7" {% if category is defined and category =='Personal' %} selected="selected" {%endif%}>Personal</option>
<option value="8" {% if category is defined and category =='Other' %} selected="selected" {%endif%}>Other</option>
</select>
</div>
<span id="result"></span>
<form>
<button type="submit" id="calc" value="sCategory">Submit</button>
</form>
</div>
</div>
</div>
{% if results is not none %}
<div>
{% include "table.html" %}
{% endif %}
</div>
</form>
{% endblock %}
我通常使用两种形式而不是做:
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
我有一个网页应该允许用户通过输入项目名称来搜索数据库,或者收集特定类别的所有项目。
我想这涉及两个 POST 请求,虽然我有搜索项目名称的功能,但我不知道如何创建第二个 POST在同一 html 页面中请求按类别搜索功能。任何帮助将不胜感激。
这是我的 python 搜索功能。不过,我还没有为“按类别搜索项目”POST 请求添加任何代码。
@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 %}
<form class="form" action="" method="POST">
<div>
<div class="banner">
<h1>Find Your Expenses Easily</h1>
</div>
<br />
<div class="row">
<div class="column">
<div class="item">
<label for="fname">Search by item name<span>*</span></label>
<input id="fname" type="text" name="query"/>
</div>
<span id="result"></span>
<form>
<button type="submit" id="calc" value="sName">Submit</button>
</form>
</div>
<div class="column">
<div class="item">
<label for="fname">Search by item category<span>*</span></label>
<br />
<select name="query">
<option selected value="" disabled selected></option>
<option value="1" {% if category is defined and category =='Groceries' %} selected="selected" {%endif%}>Groceries</option>
<option value="2" {% if category is defined and category =='Transportation' %} selected="selected" {%endif%}>Transportation</option>
<option value="3" {% if category is defined and category =='Entertainment' %} selected="selected" {%endif%}>Entertainment</option>
<option value="4" {% if category is defined and category =='Rent' %} selected="selected" {%endif%}>Rent</option>
<option value="5" {% if category is defined and category =='Utilities' %} selected="selected" {%endif%}>Utilities</option>
<option value="6" {% if category is defined and category =='Gifts' %} selected="selected" {%endif%}>Gifts</option>
<option value="7" {% if category is defined and category =='Personal' %} selected="selected" {%endif%}>Personal</option>
<option value="8" {% if category is defined and category =='Other' %} selected="selected" {%endif%}>Other</option>
</select>
</div>
<span id="result"></span>
<form>
<button type="submit" id="calc" value="sCategory">Submit</button>
</form>
</div>
</div>
</div>
{% if results is not none %}
<div>
{% include "table.html" %}
{% endif %}
</div>
</form>
{% endblock %}
我通常使用两种形式而不是做:
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