【发布时间】:2022-02-16 23:17:26
【问题描述】:
我为我的 Flask 网站制作了一个 WTForms,但它只是无法验证。我之前制作过其他烧瓶 WTForms,它们似乎都可以工作,但这个就不行了
forms.py
class UpdateForm(FlaskForm):
picture = FileField('Update Profile Picture', validators=[FileAllowed(['jpeg', 'jpg', 'png'])])
username = StringField("Username", validators=[], render_kw={"placeholder": f"Enter username"})
email = StringField("Email", validators=[Email()], render_kw={"placeholder": "Enter email"})
submit = SubmitField('Update')
def validate_username(self, username):
if username.data is not None:
user = User.query.filter_by(username=username.data).first()
if user:
raise ValidationError('Username is already taken.')
def validate_email(self, email):
if email.data is not None:
emailL = User.query.filter_by(email=email.data).first()
if emailL:
raise ValidationError('Email is already taken.')
else:
raise ValidationError('Enter a valid email.')
我以前做过这些方法,但是这个真的不起作用,甚至没有给我一个错误。
routes.py
@app.route('/settings/edit-profile', methods=['POST', 'GET'])
def edit_profile():
if not current_user.is_authenticated:
flash('This process requires login.', 'failure')
return redirect(url_for('login'))
else:
form = UpdateForm()
if request.method == "POST" and form.validate_on_submit():
print(form.username.data)
print(form.email.data)
pfp = url_for('static', filename=f'pfplib/{current_user.pfp}')
return render_template("Settings/edit-profile.html", pfp=pfp, form=form)
pfp = url_for('static', filename=f'pfplib/{current_user.pfp}')
return render_template("Settings/edit-profile.html", pfp=pfp, form=form)
html文件
<form method="POST" action="" enctype="multipart/form-data">
{{ form.csrf_token }}
{{ form.hidden_tag() }}
<div class="main-content">
<div class="pfp-change">
<div class="container-pfp">
<img src="{{ pfp }}">
<div class="pick-div">
<input type="file">
<i class="fa fa-camera" style="color: #ffffff"></i>
</div>
</div>
</div>
<div class="edit-profile-form">
<div class="username-column">
{{ form.username.label(class="head-label") }}
{% if form.username.errors %}
{{ form.username(class="string-field") }}
{% print(error) %}
<div class="invalid-feedback">
<span>{{ error }}</span>
</div>
{% else %}
{{ form.username(class="string-field", value=current_user.username) }}
{% endif %}
</div>
<div class="email-column">
{{ form.email.label(class="head-label") }}
{{ form.email(class="string-field", value=current_user.email) }}
</div>
</div>
</div>
<div class="submit-div">
{{ form.submit(class="btn-gradient submit-btn-1") }}
</div>
</form>
希望有人能快速提供帮助 非常感谢你,如果你能找到解决办法
【问题讨论】:
-
使用“更新”,你到底是什么意思?是像您一样简单地获取表单中的信息,还是“更新”数据库?
标签: python python-3.x flask flask-wtforms wtforms