我可以在表单提交时动态生成python函数吗?

2024-04-23 23:12:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Flask中构建一个web应用程序,每次在客户端提交表单时,我都要为它生成一个新函数。我的设置如下:

我在index.html中定义了一个表单组件,它通过POST请求将数据发送到我的Flask服务器:

    <form method="POST">
    <input name="api" />
    <input name="api" type="submit" />
    </form>

在Flask服务器上,我定义了一个静态函数“some_plot()”,我希望在每次提交表单时动态自动生成该函数的新版本。这里发生的事情是,用户以submit的形式提交了一个API键,函数使用它根据从API接收到的数据自动绘制一个图表。我希望动态地为每个新函数指定一个新名称,例如“some \u plot1()、some \u plot2()、some \u plot3()”等

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'

我之所以希望在每个表单submit上动态生成一个新函数,是因为我呈现的图形如下所示。每个新的绘图函数都需要在“show\u dashboard()”函数中列出,以便在网页上呈现。您可以在下面看到,我手动列出了静态的“some\u plot()”函数,但我希望创建一个新函数并在每个表单submit上列出。类似于“some \u plot()1,some \u plot()2,some \u plot(3)”等。。。这可行吗?实现这一目标的好方法是什么

#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)

Tags: 函数formapiflask表单indexreturnplot