gpt4 book ai didi

python - "Bad Request The browser (or proxy) sent a request that this server could not understand."Flask登录

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:55 52 4
gpt4 key购买 nike

我收到了普遍存在的 Flask wtform 400 错误,并尝试了其他解决方案。它改善了我的表现,但并没有阻止错误。我有

模板/register.html:

{% extends "base.html" %}

{% block title %}Register{% endblock %}

{% block content %}
<h2> Welcome to the status page</h2>
<br>
<form action="/register" method="post" name="register_user">
{{ form.hidden_tag() }}
<h4>Register</h4>
<p>
Email:<br>
{{ form.email }}<br>
{% for error in form.email.errors %}
<p><span style="color: red">[{{ error }}]</span></p>
{% endfor %}
Password:<br>
{{ form.password }}<br>
{% for error in form.password.errors %}
<p><span style="color: red">[{{ error }}]</span></p>
{% endfor %}
Confirm password:<br>
{{ form.confirm }}<br>
{% for error in form.confirm.errors %}
<p><span style="color: red">[{{ error }}]</span></p>
{% endfor %}
</p>
<p><input type="submit" name="register" value="Submit"></p>
</form>
<p><a href="{{ url_for('login') }}">Log in</a></p>

<script type="text/javascript">

</script>

{% endblock %}

表单.py:

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


class RegistrationForm(Form):
# name = TextField('Your name', [validators.Length(min=2, max=60)])
email = TextField('Email Address', [validators.Length(min=6, max=35)])
password = PasswordField('New Password', [
validators.Required(),
validators.EqualTo('confirm', message='Passwords must match')
])
confirm = PasswordField('Confirm Password')

views.py:

    @application.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm(request.form)
print(form)
print(form.email.data)
print(form.password.data)
print(form.confirm.data)
print(form.validate())
if request.method == 'POST' and form.validate():
user = User(email=form.email.data, password=form.password.data)
user.save()
flash('Thanks for registering')
return redirect(url_for('awaiting_approval'))
return render_template('register.html', form=form)

打印看起来像

<app.forms.RegistrationForm object at 0x7ff762e11790>
fakeguy@fake.org
123456
1234
False

和我预想的一模一样。我假设我会重新渲染页面,并根据 password 字段的验证器显示“密码必须匹配”错误消息。我该怎么做才能让此表单失败并重新呈现页面?谢谢

最佳答案

注册.html:

<form action="{{url_for('register')}}" </form>

当您提交表单时,url_for 将查看您的views.py 中的register 函数。第二件事,您必须有一个名为:awaiting_approval 的函数,因为您在发布成功后重定向此 View 函数。

关于python - "Bad Request The browser (or proxy) sent a request that this server could not understand."Flask登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904077/

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