gpt4 book ai didi

python - Flask-WTF 表单无法获取数据

转载 作者:行者123 更新时间:2023-11-30 23:19:32 25 4
gpt4 key购买 nike

我正在使用 Flask-WTF 提交表单,但遇到了一些困难,而且我似乎找不到任何帮助或其他示例。我的代码如下,但这是我迄今为止发现的。 form.validate_on_submit() 的计算结果不为 true,因此它会跳过整个 block 。接下来我尝试看看 python 读取的请求发生了什么。当我打印出“form.username.data”的值(在初始化 LoginForm 之后)时,它打印出“None”,所以看起来表单没有正确创建?

我检查了浏览器发送的 post 请求,必要的信息在该请求中都可见!

这是我的登录表单代码:

   from flask.ext.wtf import Form
from wtforms import TextField, PasswordField
from wtforms.validators import Required

class LoginForm(Form):
username = TextField('username', validators = [Required()])
pin = PasswordField('pin', validators = [Required()])

这是路由逻辑:

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

if g.user is not None and g.user.is_authenticated():
return redirect(url_for('index'))


form = LoginForm(request.form)

print form.errors

if form.validate_on_submit():
if form.username is None or form.username == "":
print "invalid user"
flash('Invalid login. Please try again.')
return redirect(url_for('login'))
user = db.session.query(User).filter_by(username=form.username).filter_by(password=form.pin).first()
print user
if user is None:
flash('User does not exist. Please register.')
return redirect(url_for('welcome'))

login_user(user)
return redirect(url_for('dashboard'))
print "didn't validate"
return render_template('login.html', title = 'Sign In', form = form)

配置代码:

CSRF_ENABLED = True

这是 HTML 表单:

{% extends 'base.html' %}

{% block content %}
<h1>Sign In</h1>
<form action="" method="post" name="login">
{{ form.hidden_tag()}}
<p>
Please enter your username:<br>
{{ form.username }}<br>
</p>
<p>
Please enter your pin:<br>
{{ form.pin }}<br>
</p>
<p><input type="submit" value="Sign In"></p>
</form>
{% endblock %}

我已经看了好几天了,但我不知道下一步该做什么。有什么指示或任何明显的我遗漏的东西吗?

最佳答案

表单 = LoginForm()

并且可以优化代码如下:

form = LoginForm() if request.method == 'POST' else LoginForm(request.args)
if form.validate_on_submit():
if login_user(form.user, remember=form.remember_me.data) is True:
flash(_('Logged in successfully.'))
return redirect(form.next.data or url_for('index'))
return render_template('users/login.html', form=form)

关于python - Flask-WTF 表单无法获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com