关于 flask-wtf 的错误提示问题?

本人正在测试一个项目,基本思想就是在一个页面里实现对“对象”的“增减删改”。

下图是添加一个“对象”

图片描述

删除一个“对象”如下图:

图片描述

如上图所示,我们看到了“对象”被删除了,但是出现了一些错误提示。

出现错误提示的原因是因为我使用了 flask-wtf 的表单验证。

form.py内容如下:

class AddZoneForm(FlaskForm):
    name = StringField(u'单位名称', validators=[DataRequired(),
                       Regexp(ur'^[\u4E00-\u9FFF]+$', flags=0, message=u'用户名必须为中文')])
    status = SelectField(u'状态', choices=[(u'True', u'正常'), (u'False', u'注销') ])
    submit = SubmitField(u'添加单位')

    def validate_name(self, field):
        if Zone.query.filter_by(name=field.data).first():
            raise ValidationError(u'单位名称已被注册!')


class DeleteZoneForm(FlaskForm):
    zone_id = StringField()


class EditZoneForm(FlaskForm):
    name = StringField(u'单位名称', validators=[DataRequired(),
                                            Regexp(ur'^[\u4E00-\u9FFF]+$', flags=0, message=u'用户名必须为中文')])
    status = SelectField(u'状态', choices=[(u'True', u'正常'), (u'False', u'注销')])
    submit = SubmitField(u'修改单位')

    def validate_name(self, field):
        if Zone.query.filter_by(name=field.data).first():
            raise ValidationError(u'单位名称已被注册!')

html 页面的部分 jinja2 代码如下:

<!-- 错误信息form提示 -->
{% for field_name, field_errors in addZoneForm.errors|dictsort if field_errors %}
    {% for error in field_errors %}
        <div class="alert alert-danger alert-dismissible" role="alert">
            <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <strong>{{ addZoneForm[field_name].label }}错误:</strong> {{ error }}
        </div>
    {% endfor %}
{% endfor %}
<!-- 错误信息form提示 end -->

出现错误提示的问题是因为我在删除对象的时候,上面代码没有获取到 addZoneForm 表单的信息。删除上面的代码当然能解决问题,但是为了用户的界面友好性,我复制上面的 jinja2 代码,加上了对 deleteZoneForm的验证。这时,问题就出现了,不管是增加“对象”还是删除“对象”都会出现错误提示,因为出现了冲突。

那么,如何能够在保证界面的用户友好性,提示的信息越详细越好的情况下,不出现那些不知所谓的错误。

阅读 4.7k
1 个回答

前端渲染不用 wtforms自带的组件渲染
自己写 HTML,然后用 Ajax 返回提示信息

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题