如何从Flask中的textarea创建可调用函数?

时间:2013-09-15 22:00:09

标签: python html flask

我正在尝试创建一个Flask应用程序,它从我的HTML文件中的textarea中读取文本函数,并评估它存储在实际函数中,因此我可以随时使用自己的参数调用它。例如,如果textarea包含函数:

def(a,b):
    return a+b

然后我希望能够将它存储到Flask应用程序中的变量func,并调用func(1,2)并获得3.这可能吗?对于它的价值,我的准系统Flask应用程序包括在下面:

from flask import Flask
from flask import request
from flask import render_template

app = Flask(__name__)

@app.route('/')
def strategy():
    return render_template("default.html")

@app.route('/', methods=['POST'])
def strategy_post():
    strategy_raw = request.form['strategy_input']
    return ???

if __name__ == "__main__":
    app.run()

使用模板:

<!DOCTYPE html>
<html lang="en">
<body>
    <h1>Input a function below</h1>
    <form action="." method="POST">
        <textarea type="text" name="strategy_input"></textarea>
        <button type="submit" name="submit" value="Send">
    </form>
</body>

1 个答案:

答案 0 :(得分:0)

只需付出一点努力,但这是一个非常糟糕的主意,因为这是任何人在您的服务器上执行任意代码的直接方式。如果你仍然想要这样做,你可以先查看evalexev,但在使用之前先三思而后并在继续之前至少阅读exec-in-python。< / p>

>>> foo = eval('lambda x, y: x +y ')
>>> foo(1, 2)
3