2017-08-16 78 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的数据? –