flask - 如何从 flask_wtforms 获取验证错误
问题描述
我想从 flask_wtforms 的 textarea 表单中获取验证错误。我知道您可以通过将其包含在 html 中来获取它们:
{% for error in form.post.errors %}
{{ error }}
{% endfor %}
但这对我来说不太适用,因为我使用引导模式并且长度验证要求您提交表单,刷新页面,这与阻止您提交的 DataRequired() 验证器不同。很难说表格失败了。
基本上我想从 python 端获取错误并刷新它们。
我尝试使用 form.post.errors 访问错误,但它不起作用,它总是返回一个空集。
这是我的索引的代码
def index():
form = PostForm()
// I would like to get the errors via form.post.errors here and I don't understand why I can't
if form.validate_on_submit():
post = Post(body=form.post.data, author=current_user)
db.session.add(post)
db.session.commit()
flash('Your post is now live!', 'primary')
return redirect(url_for('index'))
page = request.args.get('page', 1, type=int)
posts = current_user.followed_posts().paginate(page, app.config['POSTS_PER_PAGE'], False)
next_url = url_for('index', page=posts.next_num) if posts.has_next else None
prev_url = url_for('index', page=posts.prev_num) if posts.has_prev else None
return render_template('index.html', title='Home', posts=posts.items, form=form, next_url=next_url, prev_url=prev_url)
{% extends "base.html" %}
{% block content %}
{% if form %}
<div class="modal fade" id="submitPost" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form action="" method="post">
{{ form.hidden_tag() }}
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="submitPostLabel">Submit Post</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="PostText">{{ form.post.label }}</label>
{{ form.post(cols=32, rows=4, class="form-control") }}<br>
</div>
</div>
<div class="modal-footer">
<!-- <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> -->
{{ form.submit(class="btn btn-primary") }}
</div>
</div>
</form>
</div>
</div>
{% endif %}
上面的html文件基本上就是
<form action="" method="post">
{{ form.hidden_tag() }}
{{ form.post.label }}
{{ form.post(cols=32, rows=4, class="form-control") }}
{{ form.submit(class="btn btn-primary") }}
</form>
有一些引导
解决方案
您可以通过添加以下内容来打印错误:打印 form.errors.items()。
推荐阅读
- html - 如何用 CSS 弯曲三角形的斜边
- sql-server - T-SQL - 根据来自多个表的值扩展本地参数中的文本,而不使用 if 语句
- java - Eclipse (Java) 中未加载 HttpClient 类
- spring - 无法创建弹簧豆
- excel-formula - 在每一行中从多个不同的列中查找唯一值
- solr - 如何使 Solr 搜索不区分大小写?
- mysql - 如何使用带有 WITH 子句的 INSERT 语句?
- google-cloud-platform - GCP 负载平衡器是否支持带有 SSL 终止的 HTTPS 和 AMQP 端口?
- c - 如何监控多个位置并为每个路径分别显示一条消息?
- android - 未找到处理 Intent 的 Activity:intent.action.PICK