0
我有兩個不同的wtforms與「提交」按鈕在一個頁面上。 點擊其中任何一個都會激活最後一個,所以validate_on_submit函數對於第二個按鈕總是返回True。兩個wtforms在同一頁上提交。 validate_on_submit只與最後一個工作
forms.py
class SearchByAuthorForm(Form):
author_name = TextField('author_name', validators = [Length(max=25)])
author_surname = TextField('author_surname',validators = [Length(max=25)])
submit = SubmitField("Search")
class SearchByBookForm(Form):
title = TextField('title', validators = [Length(max=50)])
submit = SubmitField("Search")
views.py
@app.route('/', methods = ['GET','POST'])
@app.route('/index', methods = ['GET','POST'])
@login_required
def index():
user = g.user
aform = SearchByAuthorForm(request.form)
bform = SearchByBookForm(request.form)
search_result = []
search_type = ""
print aform.errors
print bform.errors
if aform.validate_on_submit():
author_name = aform.author_name.data.lower()
author_surname = aform.author_surname.data.lower()
search_type = "author"
if author_name != "" and author_surname == "":
search_result = Author.query.filter_by(author_name = author_name).all()
if author_name == "" and author_surname != "":
search_result = Author.query.filter_by(author_surname = author_surname).all()
if author_name != "" and author_surname != "":
search_result = Author.query.filter_by(author_name = author_name, author_surname = author_surname).all()
if bform.validate_on_submit():
title = bform.title.data.lower()
search_result = Book.query.filter_by(title = title).all()
search_type = "book"
print aform.errors
print bform.errors
return render_template('index.html', user = user, a_form = aform, b_form = bform, search_result = search_result, search_type = search_type)
模板:
<div style="width:100%">
<div style="width:50%;float:left;">
<form action="" method="post" name="author_search">
{{ a_form.hidden_tag() }}
<h2>Search by author</h2><br>
<table>
<tr>
<td>Author's Name:</td><td>{{ a_form.author_name(size=25) }}</td>
</tr>
<tr>
<td>Author's Surname:</td><td>{{ a_form.author_surname(size=25) }}<td>
</tr>
</table>
<p>{{ a_form.submit }}</p>
</form>
</div>
<div style="width:50%;float:left;">
<form action="" method="post" name="book_search">
{{ b_form.hidden_tag() }}
<h2>Search by book</h2><br>
<table>
<tr>
<td>Title:</td><td>{{ b_form.title(size=25) }}</td>
</tr>
</table>
<p><input type="submit" value="Search" name="book"></p>
</form>
</div>
</div>