我有一个包含大量输入框(数字,复选框等)的页面,我需要在POST请求之前准备数据。所以我有一堆方法可以调整这些输入的名称,将它们很好地捆绑在一个名为data
的对象中。出于我的目的,将提交按钮放在上面的表单中不起作用,因为POST请求是使用默认名称完成的。因为这个原因所有上面的输入都包含在div中,然后我有一个提交按钮和onClick我正在做一个axios POST请求:
axios({
method: 'post',
url: '/smart-beta/',
data
});
在Flask结束时我有这个:
elif request.method == "POST":
sbe_args = json.loads(request.data)
sb = SbeGenerator(sbe_args)
sb.run() # TODO: depending on how long this takes, may add a loading animation to the page
eg = ExcelGenerator(sb)
eg.create_excel()
beta = sb.beta
sharpe = sb.sharpe
annualised_return = sb.ann_mean
annualised_vol = sb.ann_vol
time_series = sb.port_json
stocks = sb.last_stocks_json
print("Time series: " + str(time_series))
print("stocks: " + str(stocks))
# TODO: Do the redirect here (getting 302 status on the POST request if redirect is here, becasue
# TODO: axios catches it in then
print("Rendering template")
return render_template('smart_beta/calculation.html')
我在POST请求中获得200,但它从不呈现我的其他页面。它只挂在当前页面上。这是因为axios的承诺永远不会被解决?当我做.then(function(response) {console.log(response);});
< - 它仍然挂起。我需要使用render_template的原因是因为我需要将time_series之类的东西传递到该页面。
编辑:当我在网页上的开发工具中导航到POST请求的响应时,我可以看到它是我需要的页面。