1

我正在尝试创建一个 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>

4

1 回答 1

0

稍加努力就可以,但这确实是个坏主意,因为这是任何人在您的服务器上执行任意代码的直接方式。如果您仍然想这样做,您可以从查看evalexev开始,但在使用它们之前要三思而后行,并在继续之前至少阅读exec-in-python

>>> foo = eval('lambda x, y: x +y ')
>>> foo(1, 2)
3
于 2013-09-15T22:20:39.403 回答