Python 烧瓶运行脚本,而不只是显示传递的值

Python 烧瓶运行脚本,而不只是显示传递的值,python,pandas,flask,Python,Pandas,Flask,我有一个从烧瓶前端运行的耗时python脚本。用户可以通过多种方式查看结果。为了节省时间,我在第一次运行脚本时传回所有可能的结果。结果页面有3个按钮,允许用户仅以首选格式查看数据。 不幸的是,每次单击按钮都会导致脚本重新运行 我将以下内容传递给python脚本ProcessCtinPut via flask: 1.包含物料信息的发票文件, 2.可用于承载给定负载的卡车 该脚本给出了不同卡车组合的重量和体积利用率以及成本。它考虑了所有可能的和所有可用的卡车类型。它将所有卡车和可用卡车的结果作为数据

我有一个从烧瓶前端运行的耗时python脚本。用户可以通过多种方式查看结果。为了节省时间,我在第一次运行脚本时传回所有可能的结果。结果页面有3个按钮,允许用户仅以首选格式查看数据。 不幸的是,每次单击按钮都会导致脚本重新运行

我将以下内容传递给python脚本ProcessCtinPut via flask: 1.包含物料信息的发票文件, 2.可用于承载给定负载的卡车

该脚本给出了不同卡车组合的重量和体积利用率以及成本。它考虑了所有可能的和所有可用的卡车类型。它将所有卡车和可用卡车的结果作为数据帧发送回

为了更容易理解结果,我提供了3个按钮来限制结果查看: 1.用所有可用的卡车 2.通过最佳利用每个目的地的所有可用卡车 3.按所有可用卡车的最佳费率

@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之外,我还没有尝试过任何东西。。。。如果没有别的办法,我将不得不尝试其他场地