Python 烧瓶运行脚本,而不只是显示传递的值
我有一个从烧瓶前端运行的耗时python脚本。用户可以通过多种方式查看结果。为了节省时间,我在第一次运行脚本时传回所有可能的结果。结果页面有3个按钮,允许用户仅以首选格式查看数据。 不幸的是,每次单击按钮都会导致脚本重新运行 我将以下内容传递给python脚本ProcessCtinPut via flask: 1.包含物料信息的发票文件, 2.可用于承载给定负载的卡车 该脚本给出了不同卡车组合的重量和体积利用率以及成本。它考虑了所有可能的和所有可用的卡车类型。它将所有卡车和可用卡车的结果作为数据帧发送回 为了更容易理解结果,我提供了3个按钮来限制结果查看: 1.用所有可用的卡车 2.通过最佳利用每个目的地的所有可用卡车 3.按所有可用卡车的最佳费率Python 烧瓶运行脚本,而不只是显示传递的值,python,pandas,flask,Python,Pandas,Flask,我有一个从烧瓶前端运行的耗时python脚本。用户可以通过多种方式查看结果。为了节省时间,我在第一次运行脚本时传回所有可能的结果。结果页面有3个按钮,允许用户仅以首选格式查看数据。 不幸的是,每次单击按钮都会导致脚本重新运行 我将以下内容传递给python脚本ProcessCtinPut via flask: 1.包含物料信息的发票文件, 2.可用于承载给定负载的卡车 该脚本给出了不同卡车组合的重量和体积利用率以及成本。它考虑了所有可能的和所有可用的卡车类型。它将所有卡车和可用卡车的结果作为数据
@app.route('/processSCT', methods = ['GET','POST'])
def processSCT():
allOutput,avlOutput,notInPFEP,noPUC=processSCTInput(session)
if request.method == 'POST':
if 'avlTrucks' in request.form:
print('Button Clicked for Customer')
text="Truck Recommendation by Available Trucks"
if session['AvailableTrucks']:
df=avlOutput
else:
df=allOutput
text="blah 1"
return render_template('/resultsSCT.html', tables=[df.to_html(classes='data',header='true',index=False)],text=text)
if 'bestWt' in request.form:
print('Button Clicked')
text="Best Trucks By Utilisation from available Trucks"
if session['AvailableTrucks']:
df=avlOutput
else:
df=allOutput
text="blah 2"
df.sort_values(by=['City','WtUtil%','VolUtil%','%Spend'],ascending=[True,False,False,True],inplace=True)
df=df.drop_duplicates('City')
return render_template('/resultsSCT.html', tables=[df.to_html(classes='data',header='true',index=False)],text=text)
if 'bestRate' in request.form:
print('Button Clicked')
text="blah 3"
if session['AvailableTrucks']:
df=avlOutput
else:
df=allOutput
text="blah 3"
df.sort_values(by=['City','%Spend','WtUtil%','VolUtil%'],ascending=[True,True,False,False],inplace=True)
df=df.drop_duplicates('City')
return render_template('/resultsSCT.html', tables=[df.to_html(classes='data',header='true',index=False)],text=text)
if 'Results' in request.form:
print('Button Clicked')
#return results
return render_template('resultsSCT.html', tables=[allOutput.to_html(classes='data',header='true')])
return render_template('/sct.html',tables=[allOutput.to_html(classes='data',header='true')] )
我的期望是不同的按钮将使用在第一行中接收的2个数据帧allOutput和avlOutput
<h3>Processing for All Trucks!</h3>
<br>
<br>
<form method="post" action="", novalidate>
<br>
<div class="divider"></div>
</div><input class = "button" type="submit" name="avlTrucks" value="Available Trucks">
<div class="divider"></div>
<input class = "button" type="submit" name="bestWt" value="Available By Utilisation">
<div class="divider">
</div><input class = "button" type="submit" name="bestRate" value="Available By Rate">
<br>
</h3>
</form>
<br>
<br>
<h3>Results : {{text}}!</h3>
<table class="centered thick-border">
{% for table in tables %}
{{ table|safe }}
{% endfor %}
</table>
<h3><a href="/downloadFiles">Download</a> displayed data as csv files.</h3>
<br>
{% endblock %}
处理所有卡车!
结果:{{text}}!
{对于表%%中的表,%}
{{表|安全}}
{%endfor%}
将数据显示为csv文件。
{%endblock%}
相反,每次单击按钮都会导致ProcessCtinput重新运行
这是Python3.7和根据Miguel Grinberg教程设置的virtualenv。
我对任何类型的前端编程都是一个完全的新手。这是在教程的帮助下完成的。我遗漏了什么?您正在提交表单 您应该尝试使用
ajaxCall
,因此当您单击某个选项时,您可以放置一个gif或js动画来加载数据,然后使用ajax的success
来显示信息
有点像道具:
function myReport(id){
$.ajax({
type: "GET",
url: "/processSCT",
data: { option: id},
success: function(data) {
$('#result').html(data)
},
error: function (jXHR, textStatus, errorThrown) {
alert('Something gots wrong, shit!')
}
});
}
如果要显示所有id,则应将id放在表格上,以编辑特定的id。谢谢。到目前为止,除了基本的python和flask之外,我还没有尝试过任何东西。。。。如果没有别的办法,我将不得不尝试其他场地