使用Flask将表单数据以及列表值传递到HTML页面

时间:2018-08-01 19:22:23

标签: python flask

我想同时传递表格数据和烧瓶中的列表值。但是表单数据不会出现在输出中。我是python的新手。抱歉,我的问题听起来太愚蠢了!  这是烧瓶代码

from flask import Flask
from flask import render_template,request
app = Flask(__name__)
@app.route('/')
def my_form():
    return render_template('a.html')

@app.route('/', methods=['GET', 'POST'])
def my_form_post():
result = request.form['username']
list1=['Who is the president of India?','Who is the captain of Team 
        India?','In which year was Mahatma Gandhi born?'];
return render_template('welcome.html', result=result, lis=list1)

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

这是html代码:

<html>
<head>
<title>Welcome!</title>
</head>
<body>
Welcome to the quiz {{result.username}}
{{lis[0]}} 
</body>
</html>

这是表单页面:

<html>
<head>
<title>Welcome!</title>
</head>
<body>
<form method="POST" action="/">
Welcome to the quiz. Please Enter your name to proceed!
Name: <input type="text" name="username">
<input type="submit" name="submitdata">
</form>
</body>
</html>

我得到的输出为:
欢迎参加测验谁是印度总统?
为什么输入的名称不出现在输出中?但是,如果我只更改此行代码

return render_template('welcome.html', result=result)

我将输出作为“欢迎来到测验xyz”。 那为什么不能在render_template()中传递多个变量?

1 个答案:

答案 0 :(得分:0)

你不能拥有这个:

@app.route('/')
def my_form():
    return render_template('a.html')

@app.route('/', methods=['GET', 'POST'])
def my_form_post():

您已经定义了两个具有相同标识符'/'的路由。将使用后一个,而第一个将被完全忽略。

首次执行代码(作为GET)时,没有提供username字符串的形式,因此它不会被呈现,这解释了您的输出,“欢迎参加测验谁是印度总统? ?”