Flask中的两个函数可以独立绘制数据

时间:2016-11-09 05:26:54

标签: python flask

如何创建单独的函数(在controller.py中的索引函数内),这样我就可以创建两个独立的图,其中包含两个独立加载的独立文件?

换句话说,我希望用户采取以下步骤:

  1. 上传培训文件
  2. 点击“绘图”按钮绘制
  3. 现在上传测试文件
  4. 点击“绘图”按钮进行绘图。
  5. 两个图都应出现在同一个HTML模板上。两个文件都将使用相同的绘图功能(或现在)。理想情况下,我想使用不同的功能。

    以下是输入HTML的外观:

    enter image description here

    绘制的功能如下:

    def compute_mean_std(filename=None):
        # data = np.loadtxt(os.path.join('uploads', filename))
        df = pd.read_csv(os.path.join('uploads', filename))
        sns.set_style('darkgrid')
        fig, ax = plt.subplots(3, sharex=True)
        ax[0].plot(df.index, df.x, color="red")
        ax[1].plot(df.index, df.y, color="blue")
        ax[2].plot(df.index, df.z, color="teal")
        ax[0].legend(numpoints=1, loc=1)
        ax[1].legend(loc=1)
        ax[2].legend(loc=1)
    
        # Check static folder:
        if not os.path.isdir('static'):
            os.mkdir('static')
        else:
            for plotfilename in glob.glob(os.path.join('static', '*.png')):
                os.remove(plotfilename)
        plotfile = os.path.join('static', str(time.time()) + '.png')
        plt.savefig(plotfile)
        return plotfile
    

    虽然控制器具有以下代码:

    from compute import compute_mean_std as compute_function
    @app.route('/', methods=['GET', 'POST'])
    def index():
        form = Average(request.form)
        filename = None  # default
        if request.method == 'POST':
    
            # Save uploaded file on server if it exists and is valid
            if request.files:
                file = request.files[form.filename.name]
                if file and allowed_file(file.filename):
                    # Make a valid version of filename for any file ystem
                    filename = secure_filename(file.filename)
                    file.save(os.path.join(app.config['UPLOAD_FOLDER'],
                                           filename))
    
            result = compute_function(filename)
        else:
            result = None
    
        return render_template("view.html", form=form, result=result)
    

    现在两个都绘制​​相同的图。

    enter image description here

1 个答案:

答案 0 :(得分:1)

那么我们如何区分两个文件上传。选项是我们必须创建两个文件输入...

<input type="file" name="file_training">
<input type="file" name="file_test">

并且在您的视图功能中,您必须检查用户上传的文件

# Inside POST method
file_training = request.files.get('file_training')
file_test = request.files.get('file_test')
return jsonify({"file_training": file_training, "file_test": file_test})

HTML

在你的ajax成功中,记录哪些有值。