我是学习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>
答案 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>