Могу ли я динамически генерировать функцию Python при отправке формы? - PullRequest
0 голосов
/ 08 июня 2018

Я создаю веб-приложение во Flask, для которого я хотел бы создавать новую функцию каждый раз при отправке формы на стороне клиента.Вот как выглядит моя установка:

У меня есть компонент формы, определенный в index.html, который отправляет данные на мой сервер Flask через запрос POST:

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

На сервере Flask,Я определил статическую функцию "some_plot ()", новую версию которой я хотел бы автоматически генерировать автоматически при каждой отправке формы.Здесь происходит то, что пользователь отправляет ключ API в форме отправки, и эта функция используется функцией для автоматического построения диаграммы на основе данных, полученных из API.Мне бы хотелось, чтобы каждая новая функция динамически получала новое имя, например «some_plot1 (), some_plot2 (), some_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'

Причина, по которой я хотел бы, чтобы новая функциябыть динамически генерируемым при каждой отправке формы, потому что я отрисовываю графики следующим образом.Каждая новая функция графика должна быть указана в функции "show_dashboard ()", чтобы она отображалась на веб-странице.Ниже вы можете видеть, что я вручную перечислил статическую функцию «some_plot ()», но мне бы хотелось, чтобы новая функция создавалась и отображалась при каждой отправке формы.Что-то вроде «some_plot () 1, some_plot () 2, some_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)
...