如何在烧瓶中构建一个get-form帖子

Jos*_*ein 8 html python flask flask-wtforms

好的,所以我是新手,想知道我会用什么对象或工具来做这件事.我想创建一个表单,用户输入一些文本,单击提交按钮,然后他们提交的文本绑定为python字符串,并在其上运行一个函数,然后将该文本发布回Web他们正在查看的页面,其中包含该功能的返回值.这是一个例子:

HTML格式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action = "/" method="get">
    <input type="text" name="mail" size="25">
    <input type="submit" value="Submit">
</form>

<textarea cols="50" rows="4" name="result"></textarea>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

那么这就是我认为应该是url函数的样子

@app.route('/', methods=['GET', 'POST'])
    def form():
         if request.method == 'GET':
             input_text = request.data #step to bind form text to python string
              new_text = textfunction(input_text) #running the function on the retrieved test.
              return (new_text) # no idea if this is write, but returns text after modification.
Run Code Online (Sandbox Code Playgroud)

设置它的最佳方法是什么?将变量作为输入html的值是否正确?需要一些帮助.

小智 10

基本上,您要做的是在模板中有一个块,只有在变量设置了值时才包含该块.请参阅以下示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action = "/" method="get">
    <input type="text" name="mail" size="25">
    <input type="submit" value="Submit">
</form>

{% if result %}
<textarea cols="50" rows="4" name="result">{{ result }}</textarea>
{% endif %}

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后在你的python代码中

@app.route('/', methods=['GET', 'POST'])
def index(result=None):
    if request.args.get('mail', None):
        result = process_text(request.args['mail'])
    return render_template('index.html', result=result)


def process_text(text):
    return "FOO" + text
Run Code Online (Sandbox Code Playgroud)