我正在使用AJAX和Flask来允许通过web-app更改pandas数据框中的列名。
除了崩溃之外它有效。它似乎使用POST将新列名称发送到服务器,然后将更新的数据帧发送回客户端。
但是它似乎发送了一个不允许的GET请求,因此崩溃了。您可以看到初始POST请求(200)和以下GET请求(405):
127.0.0.1 - - [09/May/2018 18:19:23] "POST /process HTTP/1.1" 200 -
127.0.0.1 - - [09/May/2018 18:19:23] "GET /process?eq_site_limit=1&hu_site_limit=2&fl_site_limit=3&fr_site_limit=7 HTTP/1.1" 405 -
我可以使用 返回flask.render_template 来返回一个html页面,但之后我会刷新网页而我正在尝试这样做而不这样做
为什么要解雇GET请求以及如何防止它?
这是烧瓶应用程序:
@app.route('/process', methods=['POST'])
def process():
df = pd.read_csv('../data/df_reduced_cols.csv')
existing_cols = list(df.columns)
form_results = request.form
for k, v in form_results.items():
df.rename(columns={k: v}, inplace=True)
new_columns = list(df.columns)
new_head = print_head(df)
return jsonify(new_head = new_head)
这是AJAX:
<script>
$(document).ready(function(){
$("button").click(function(){
var dataResults = $("form").serializeArray();
$.ajax({
data: dataResults,
type : 'POST',
url : '/process'
})
});
});
</script>
这是HTML:
<form action="/process">
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Old Name</th>
<th scope="col">New Name</th>
</tr>
</thead>
<tbody>
{% for col in columns %}
<tr>
<td>{{col}}</td>
<td>
<input type="text" name="{{col}}" placeholder="New Column Name">
</td>
</tr>
{% endfor %}
<button type="submit" class="btn btn-primary" >Submit Here</button>
</form>
<h1><small>{{new_head}}</small></h1>
感谢您的任何指示!