在这种情况下如何返回jinja值?

时间:2017-08-21 05:57:07

标签: python html flask jinja2 return-value

我是学习jinja / flask的新手,到目前为止理解力相对较低。如果有人可以帮忙解决这个问题,那就太好了。我在理解如何在这里访问变量值时遇到一些麻烦。我做了一个微弱的尝试但没有成功。当我点击“提交”按钮试图让我的名字在“欢迎”之后在下一页上打印时出错。

好吧,我有一个带有表单的索引页面,我想在POST页面上返回提交的值,如下所示。但是,我遇到了语法问题。这是使用python / jinja2 / html在Pycharm中使用Flask构建的。这就是我相信存在一些困惑的地方。

EDIT_1:我理解这个主题有几个以前的帖子,但我似乎无法应用这些帖子解释的内容。实际上,我在这里的代码来自我在这里找到的另一篇文章。

这是Python文件:

from flask import Flask, render_template, request

app = Flask(__name__)


@app.route("/")
def index():
    return render_template("index.html")


@app.route("/username", methods=['POST', 'GET'])
def username():
    if request.method == 'POST':
       user = request.form
        return render_template("username.html", username=user)
    return print("Something went wrong...smash your computer!")


if __name__ == '__main__':
    app.run(debug=True)

这是索引文件,其中包含我想要获取用户名的表单:

...
<div id="wrapper">
    <div id="title_head">
    <p class="title"> Gauntlet  </p>
    </div>
    <div id="working_area">
    <form action = "http://localhost:5000/username" method = "POST">
        <p>Enter Username: <input type = "text" name = "Name" /></p>
        <p><input type = "submit" value = "SUBMIT" /></p>
    </form>
    </div>
</div>
</body>
</html>

最后,这是用户名POST页面(我将在此处包含相关部分):

...
<body>
<div id="wrapper">
   <div id="title_head">
        <p class="title"> Gauntlet  </p>
    </div>
    <div id="working_area">
        {% for user in username %}
        <p>Welcome, {{ username.user }}</p>
        {% endfor %}

    </div>
</div>
</body>

2 个答案:

答案 0 :(得分:1)

问题在于您用来解析表单数据的代码(烧瓶)。您需要提供输入数据的表单元素的key

user=request.form['Name']添加到代码中,您将在变量username中获得所需的值。然后您可以执行以下操作:

return render_template("username.html", username=user)

答案 1 :(得分:0)

首先,将user=request.form更改为username=request.form["Name"]

然后,将return render_template("username.html", username=user)更改为render_template("username.html", username=username)

最后,修改username.html的模板文件:

...
<body>
    <div id="wrapper">
        <div id="title_head">
            <p class="title"> Gauntlet  </p>
        </div>
        <div id="working_area">
            <p>Welcome, {{ username }}</p>
        </div>
    </div>
</body>