【问题标题】:Return forms values in the same page在同一页面中返回表单值
【发布时间】:2021-02-03 00:57:36
【问题描述】:

我使用此代码返回值并在新页面上获取它们

app.py

from flask import Flask, render_template, redirect, url_for
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField

app = Flask(__name__)
app.config['SECRET_KEY'] = 'Thisisasecret!'

class LoginForm(FlaskForm):
    username = StringField('username')
    password = PasswordField('password')

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

    if form.validate_on_submit():
        #return '<h1>The username is {}. The password is {}.'.format(form.username.data, form.password.data)
        return redirect(url_for('form', username=form.username.data, password=form.password.data))
    return render_template('form.html', form=form,username=form.username.data,password=form.password.data)

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

form.html

<html>
<head>
<title>Form!</title>
</head>
<body>
<h1>Our form will be here!</h1>
<form method="POST" action="{{ url_for('form') }}">
    {{ form.csrf_token }}
    {{ form.username.label }}
    {{ form.username }}
    {{ form.password.label }}
    {{ form.password }}
    <input type="submit" value="Submit">
    <p>name is: {{username}} </p>
    <p>password is: {{password}} </p>
</form>
</body>
</html>

如何更改此代码以使其返回提交按钮下方的结果,而不是打开新网页?

【问题讨论】:

    标签: python flask flask-wtforms wtforms


    【解决方案1】:

    您可以使用 jinja,这样当您提交表单并重定向到同一页面时,您可以将用户名和密码作为参数传递给视图,您可以将其添加到提交按钮下方。尝试使用

    return redirect(url_for('form', username=username, password=password))
    

    而不是

    return '<h1>The username is {}. The password is {}.'.format(form.username.data, form.password.data)
    

    这基本上会重定向到同一页面并让您访问用户名和密码。

    【讨论】:

    • 我确实用您的更改更新了上面的代码,但仍然没有任何反应......我没有收到任何陈述,我错过了什么?
    • 我不太确定flask-wtf表单是如何工作的,但我认为将数据发送到HTML模板的方式是正确的。您能否在重定向之前通过将form.username.dataform.password.data 的值打印到控制台来验证它的值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2018-09-15
    • 2023-03-09
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多