2017-08-16 123 views
1

我正在使用燒瓶應用程序作爲服務器。我只是返回一個用戶交易。但是,如果交易錯誤,我需要讓用戶給服務器反饋。燒瓶 - 將反饋數據存儲到服務器

from flask import Flask, render_template, request 
import pandas as pd 
pd.set_option('display.max_colwidth', -1) 

app = Flask(__name__) 

@app.route("/") 
def index(): 
    return render_template('index.html') 

@app.route("/submit", methods=['GET','POST']) 
def submit_table(): 
    if request.method == 'POST': 
     if request.form['submit'] == 'Get Started!': 
      last_month_txn = pd.read_csv("./Predicted_Reoccuring_Payments.csv") 
      last_month_txn = last_month_txn[["processing_dt", "narrative","transaction_amt", "trans_type_desc"]] 
if __name__ == '__main__': 
    app.run(port=5050, threaded=True) 

submit_table函數將在熊貓數據框中讀取並將其發送到頁面。這在用戶登錄時起作用。我沒有包含登錄表單。我有一個引導模式,如果一個人想要對錶中的一個條目提出異議,就會提出這個模式。

<form method = "POST" action="submit"> 
    <div class="modal fade modal-admin" id="myModal" role="dialog"> 
    <div class="modal-dialog modal-lg"> 
     <!-- Modal content--> 
     <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal">&times;</button> 
      <h3 class="modal-title" name="feedback">Submit Feedback</h3> 
     </div> 
     <div class="modal-body"> 
      <h4>Please provide feedback about this transaction</h4> 

      <div class="form-group" style="padding:20px;"> 
      <label for="text_area">Additional information</label> 
      <textarea class="form-control mywidth" id="text_area" rows="3" name="text_area"></textarea> 
      </div> 

     <div class="modal-footer"> 
      <button type="button" class="btn btn-primary" id="submit_modal" data-dismiss="modal">Submit</button> 
      <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button> 
     </div> 
     </div> 
    </div> 
    </div> 

我需要登錄這個數據,文本區域的具體內容,到服務器上的一些文件。我不希望網頁在提交時重定向/刷新。 有沒有一種方法讓燒瓶獲得這個表單的內容而不影響網址/網址?

回答

1

我認爲你必須在JavaScript中使用Ajax請求。你可以使用Jquery(這很容易)或經典的JavaScript來做到這一點。

編輯:你可以在google上找到一些文檔!

小爲例:

$.ajax({ 
    type  : 'POST', 
    url  : '/path_url', 
    dataType : "json", 
    contentType: 'application/json;charset=UTF-8', 
    data  : JSON.stringify(dict_var), 
    success : function (result) { 
    console.log(result) 
    }, 
    error : function (error) { 
    console.log(error); 
    } 
}); 

隨着dict_var這是一個dictionnary,你只需要您的形式(很簡單)恢復數據,並通過dictionnary發送。

而在燒瓶中,你只需要在你的路線來讀取數據:

data = json.loads(request.data) 
tmp = data["key"] 

和平

+2

很好的回答,除了[請不要鏈接到W3Schools的(HTTPS://meta.stackoverflow .COM /問題/ 280478 /爲什麼 - 不W3Schools的-COM)。 –

+0

不知道:)完成! – SD3L

+0

你指定從哪裏獲取textarea的數據? –