我正在Flask中构建一个Web应用程序,每当我在客户端提交表单时,我都希望生成一个新功能。以下是我的设置:
我在index.html中定义了一个表单组件,它通过POST请求将数据发送到我的Flask服务器:
<form method="POST">
<input name="api" />
<input name="api" type="submit" />
</form>
在Flask服务器上,我定义了一个静态函数&#34; some_plot()&#34;,我希望每次提交表单时动态自动生成一个新版本。这里发生的是用户以表单submit提交API密钥,该函数使用该密钥根据从API接收的数据自动绘制图表。我想为每个新函数动态赋予一个新名称,例如&#34; some_plot1(),some_plot2(),some_plot3()&#34;等。
def some_plot():
if request.method == 'POST':
api= request.form['api']
datasource= fr.series.observations(api)
plot = figure(y_range=[-15, 20], plot_height=300, sizing_mode='scale_width')
plot.line(source=datasource, x='date', y='value', line_width=2)
script, div = components(plot)
return script, div
else:
return 'string'
我希望在每个表单提交上动态生成新函数的原因是因为我正在如下呈现图形。每个新的绘图功能都需要列在&#34; show_dashboard()&#34;功能,以便在网页上呈现。你可以在下面看到我手动列出静态&#34; some_plot()&#34;功能,但我想要的是在每个表单提交上创建和列出的新功能。像&#34; some_plot()1,some_plot()2,some_plot(3)&#34;等......这可行吗?实现这一目标的好方法是什么?
#Render Webpage#
@app.route('/', methods=['GET', 'POST'])
def show_dashboard():
plots = []
#Call Graph Function
plots.append(Urban_Index_Plot())
plots.append(Real_GDP_Plot())
if some_plot():
plots.append(some_plot())
return render_template('index.html', plots=plots)