这是我目前的代码(省略库和其他不必要的部分):
app = Flask(__name__)
class SearchForm(Form):
inputString = TextAreaField('', [validators.DataRequired()])
@app.route('/')
def index():
return render_template('Website.html')
@app.route('/results', methods=['POST'])
def results():
...
form = SearchForm(request.form)
if request.method == 'POST' and form.validate():
inputString = request.form['inputString']
...
return render_template('Website.html', cLinkName=cLinkName, \
lLinkName=lLinkName)
if __name__ == '__main__':
app.run(debug=True, use_reloader=True)
Run Code Online (Sandbox Code Playgroud)
这是网页(仅显示SearchForm提交时更改的表单和变量):
<form method=post action="{{url_for('results')}}" style="text-align: center;">
<input type="text" id="inputString" name="inputString"/>
<input type=submit value='Search' name='search_btn'>
</form>
<table align="center" border="1">
<tr>
<td style='text-align: center;'>{{ cLinkName }}</td>
<td style='text-align: center;'>{{ lLinkName }}</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
首先,我查看了Flask: redirect to same page after form submit并且我相信我试图实现被接受为正确答案的内容,但它对我不起作用,因为我也试图将变量提交到更新的网页而不是而不仅仅是刷新网页。
我希望能够提交网页SearchForm,然后使用多次提交cLinkName并lLinkName生成网页来更新我的网页SearchForm。不幸的是,我的代码只允许我提交SearchForm然后更新我的网页,cLinkName并lLinkName通过提交我的SearchForm完全一次。而且,当我尝试重新加载网页时,我会收到“继续表单重新提交”弹出窗口。所以我的问题是如何让我的网页允许我SearchForm多次提交和更新?
经过进一步研究,
在提交后清除有效表单,我现在可以请求 GET 请求并确保我可以重新加载localhost/results页面并提交另一个表单,但它不会再次通过算法运行该表单。
添加return redirect(url_for('results'))为if request.method == 'POST' and form.validate():正文的最后一行,一切正常。
| 归档时间: |
|
| 查看次数: |
31407 次 |
| 最近记录: |