第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Flask:request.method =='POST' 跳過返回語句

Flask:request.method =='POST' 跳過返回語句

函數(shù)式編程 2021-12-23 16:15:55
我的應(yīng)用程序有一個奇怪的問題。我正在做的是:我在 JS(客戶端)中生成一個 csv 文件,然后將它發(fā)送到燒瓶,然后我使用 python 腳本過濾文件,然后將其返回給客戶端。除了最后一部分,一切都很好。當(dāng)涉及到返回 render_template 時,它只是跳過那部分。這很奇怪,因?yàn)樗趇f request.method == 'POST' 內(nèi)部。我在if request.method=='POST' 中打印了值,我可以在服務(wù)器端看到這些值。燒瓶路線.py:@app.route('/update_file', methods=['GET', 'POST'])@login_requireddef update_file():    '''Opens the filtered_file page but with updated file'''    clicked = None    if request.method == 'POST':        clicked = io.StringIO(request.form['data'])        file_to_filter = pd.read_csv(clicked, sep=',', engine='python', encoding='utf_8_sig')        table1 = update_csv(file_to_filter)        print(table1)        table2 = table1.to_html(classes='my_class" id = "my_id')        return render_template('3_filtered_file.html', data=table2)這是我在我的 html 模板上顯示它的方式: <div class="table-responsive">    {{data | safe}}</div>我已經(jīng)對客戶端上傳的文件做了類似的處理,效果很好,但是這個有一個我似乎找不到的錯誤:/編輯: 這是我發(fā)送ajax請求的JS://On Update click renders table to csv, activates the be_filter and reopens it in the filtered_file.htmlvar isClicked;jQuery("#update").on('click', function(){    var response = confirm('Are you sure you want to UPDATE rows ?');    if(response == true){                            isClicked = $('#my_id').table2csv();        $.ajax({            type:'POST',            url:"{{url_for('update_file')}}",            data: {'data': isClicked}        });         //window.location.href='/update_file';    }else{        return false;    }});
查看完整描述

1 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個贊

這里的問題是,您應(yīng)該在提交表單時使用 AJAX。AJAX 主要是在后臺與服務(wù)器通信,但您正試圖將其用作以編程方式提交 POST 表單數(shù)據(jù)的工具。使用 AJAX 將向服務(wù)器發(fā)送請求,就像單擊鏈接或提交表單一樣,但瀏覽器不會導(dǎo)航到結(jié)果。這就是為什么您得出的結(jié)論是flask 跳過了render_template調(diào)用,但模板確實(shí)得到了渲染。只是通過 AJAX 調(diào)用,回復(fù)只會在 AJAX 成功回調(diào)中結(jié)束,而不是在瀏覽器的主窗口中。


對于這樣的 AJAX 請求,不需要發(fā)回 HTML。例如,您可以簡單地 return "update successful"。


您可以通過從客戶端手動重定向到結(jié)果頁面來修復(fù)現(xiàn)有代碼:


// in your $.ajax() options:

success: function(reply) {

  if (reply == "update successful") location = "/table"; // URL of table view

  else alert("server reports error");

}

在 AJAX 調(diào)用成功更新服務(wù)器上的 CSV 文件后,這將在客戶端上重定向。


但是,您可以簡單地提交實(shí)際表單:


<form id="tableDataForm" method="post" action="{{url_for('update_file')}}">

  <input type="hidden" name="data" id="tableData">

</form>

$("#update").on('click', function(){

    $('#tableData').val($('#my_id').table2csv()); // insert data into hidden <input>

    $('#tableDataForm').submit();  // send POST request

});

這就是你所需要的?,F(xiàn)在瀏覽器會再次顯示flask發(fā)回的回復(fù)。


查看完整回答
反對 回復(fù) 2021-12-23
  • 1 回答
  • 0 關(guān)注
  • 644 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號