2017-10-19 29 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():身體和一切,最後一行的罰款。