我对flask还是个新手,因此我有一个关于代码背后的逻辑以及我的思考过程是否有意义的问题。在
我有一个旧的python脚本,它需要大量的数据,对其进行处理,然后用matplotlib生成一个绘图。这个很好用。在
现在我想构建一个web应用程序,用户在其中选择特定的输入参数,单击submit按钮,我的服务器检查(在sqlite的帮助下)是否已经存在绘图/使用这些参数绘制绘图的数据,如果存在,则让用户可以下载。在
如果这个plot/the data不存在,我的flask应用程序调用python脚本,它的新plot/data将被创建并上传到sqlite,然后用户可以从web应用程序下载它。在
正如您在我的代码中看到的,python脚本是一个外部脚本,我的计划是不在我的flask应用程序的视图中包含它,这有意义吗?我应该在这里调用外部脚本还是直接将代码复制到视图中?(我想尽量避免,因为这是一个很大的剧本)
我的逻辑是这样的:# this part works well so far, I get the user input here and redirect it to the specific page
@app.route('/plot', methods = ['GET','POST'])
def get_plot():
if request.method == 'POST':
input1 = request.form['input1']
input2 = request.form['input2']
input3 = request.form['input3']
return redirect('plot/{}/{}/{}/'.format(input1, input2, input3))
else:
return render_template('plot.html')
# here it get's a bit tricky for me
@app.route('/plot')
def create_plot(input1='1', input2='2', input3='3'):
try:
db = get_db(DB_PLOT)
cur = db.execute('SELECT * FROM {} WHERE param1 = {} AND param2={}'.format(input1, input2, input3)) # get all the data from the table
except:
return "Plot not found !"
# CALL THE EXTERNAL PYTHON SCRIPT HERE?
cur = db.execute('SELECT * FROM {} WHERE param1 = {} AND param2={}'.format(input1, input2, input3)) # python script should have updated the database, so i can call the data here
data = cur.fetchall()
return render_template('show_plot.html', data=data)
此外,我还有一个问题:
如前所述,我的python脚本(到目前为止我只使用它自己)获取原始数据,对其进行操作,然后使用matplotlib创建一个绘图。
当我想在我的web应用程序中实现它时,我应该还是用python脚本创建绘图,将绘图上载到sqlite,然后用web应用程序从sqlite获取图像,还是应该只上传操纵的数据,然后从sqlite下载这些数据并用flask创建绘图?在
最后,我想让用户能够以.jpg和.pdf文件的形式下载绘图。在
太感谢你了!在