2017-10-19 68 views
0

这里是我的代码目前(省略图书馆和其他不必要的部分):如何表单提交后刷新基于瓶的网页

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) 

这里是网页(只显示形式和变量发生变化当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> 

首先,我已经看过Flask: redirect to same page after form submission,我相信我试图执行什么被接受为正确的答案,但它并没有为我工作,因为我也试图提交变量到upda而不仅仅是刷新网页。

我希望能够与来自提交产生的​​cLinkNamelLinkName提交的网页的SearchForm,然后更新我的网页上我的SearchForm不止一次。不幸的是我的代码只允许我从我提交准确SearchForm一旦产生cLinkNamelLinkName提交SearchForm,然后更新我的网页。而且,当我尝试重新加载网页时,我收到了“继续表单重新提交”弹出窗口。所以我的问题是如何才能让自己的网页让我提交SearchForm和自我更新一次以上?

经过进一步研究, Clear valid form after it is submitted,我现在可以要求GET请求,并确保我可以重新加载页面localhost/results并提交另一种形式,但它不会再次运行通过算法的形式。

+1

什么是呈现为页面上的表单动作? –

+0

第一次它打印出的语句到控制台日志是在算法和POST请求完成后更新的网页。任何其他时间,它会跳过该算法并立即声明POST请求已完成,也不会更新网页。 –

+1

这是我不清楚。你是否试图在表中查看所有搜索到的'cLinkName'和'lLinkName'? – arsho

回答

0

新增return redirect(url_for('results'))if request.method == 'POST' and form.validate():身体和一切,最后一行的罚款。