验证使用AJAX填充的FlaskForm(Flask-WTForms)SelectField

denari23

我在提交包含由AJAX填充的SelectField的表单时遇到了一些麻烦。不要介意变量名前面的字母,因为它们是自动生成的,所以它们在那里可以设置顺序:

class CreateEmployeeForm(FlaskForm):
    code = StringField(
        'Employee Code', validators=[DataRequired(), Length(max=16)]
        )
    a__first_name = StringField(
        'First Name', validators=[DataRequired(), Length(max=128)]
        )
    aa__last_name = StringField(
        'Last Name', validators=[DataRequired(), Length(max=128)]
        )
    email = StringField(
        'Email', validators=[DataRequired(), Email(), Length(max=128)]
        )
    start_date = DateField(
        'Start Date', format='%Y-%m-%d', validators=[Optional()]
        )
    phone = StringField(
        'Telephone', validators=[DataRequired(), Length(min=10, max=16)]
        )
    type_id = SelectField(
        'Employee Type', choices=[], coerce=int, 
        validators=[not_blank, v_employee_type], 
        render_kw={'class': 'dropdown_pop', 'id': 'Employee_type:name'}
        )
    z__password = PasswordField(
        'Password', validators=[DataRequired(), Length(min=8)]
        )
    z__password2 = PasswordField(
        'Repeat Password', validators=[DataRequired(), EqualTo('z__password')]
        )
    zzzz__submit = SubmitField(
        'Create Employee', render_kw={'class': 'submit_btn'}
        )

    def validate_code(self, code):
        user = Employee.query.filter_by(code=code.data).first()
        if user is not None:
            raise ValidationError('This employee id is already taken.')

    def validate_email(self, email):
        user = Employee.query.filter_by(email=email.data).first()
        if user is not None:
            raise ValidationError('Please use a different email address.')

有问题的问题是type_id在渲染时使用通过jQuery调用API从数据库中提取的选择来填充的。

如果我尝试按原样提交表单,type_id将无法验证并且会收到标准Not a valid choice错误。

我在其他地方读到,如果我为此字段设置了自定义验证功能,它将覆盖常规的FlaskForm验证。不幸的是,Flask-WTF使用下划线来检测需要验证的内容,并在我添加validate_type_id功能后立即使应用程序崩溃。我认为该错误无关紧要,因为它来自于FlaskForms构建方式。

我需要找到解决方法。

因此,我尝试创建一个外部验证函数,并在表单内字段内的validateators = [...]中调用它。没用,仍然收到无效选择错误消息。

我正在尝试通过检查数据库中是否存在为该字段选择的选项来验证该字段。或者,有没有一种方法可以不使用validate_ fieldName(...)禁用对该字段的验证

我被困在一块困难的地方,我不能更改字段名称以排除下划线,因为这是用来在数据库中创建条目的方式。从我所读的内容中,我只能使用字母,数字和下划线作为Python中的变量名,因此从这个角度来看,我很困惑。

有任何想法吗?

Nidhin bose j。

您可以尝试使用QuerySelectField扩展程序来执行此操作。

https://wtforms.readthedocs.io/zh/2.3.x/ext/#wtforms.ext.sqlalchemy.fields.QuerySelectField

那样 Submitting a choice which is not in the query will result in a validation error.

另外,您可以看一下这里提供的有关如何通过Ajax填充WTForm的示例:

https://github.com/saltycrane/flask-jquery-ajax-example

在从Ajax请求获得成功响应后,它将更新选择字段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 SQL 查询填充 WTForms SelectField

来自分类Dev

WTForms 似乎无法验证 SelectField 框

来自分类Dev

Flask / Python / WTForms 验证和动态设置 SelectField 选项

来自分类Dev

Flask-WTForms和带有关系的SQLAalchemy SelectField

来自分类Dev

Python Flask WTForms:动态SelectField返回“无效选择”

来自分类Dev

SelectField选项使用WTForms动态填充TextAreaField中的默认值

来自分类Dev

在SelectField flask-WTForms中初始化后设置默认值

来自分类Dev

wtforms SelectField始终返回None

来自分类Dev

如何在Ajax验证中使用WTForms?

来自分类Dev

如何在Ajax验证中使用WTForms?

来自分类Dev

动态WTForms SelectField显示数据库中表的列标题

来自分类Dev

wtforms中的SelectField并通过javascript添加了<option>

来自分类Dev

WTForms,具有多个SelectField的表单吗?SelectFieldArray是否存在?

来自分类Dev

带有SelectField的WTForms帖子不起作用

来自分类Dev

使用WTForms和Flask预先填充编辑表单

来自分类Dev

使用Flask-WTF从字典填充WTForms表单

来自分类Dev

使用AJAX时wtforms验证不起作用

来自分类Dev

Flask-WTForms FileField无法验证

来自分类Dev

如何用ajax调用返回的数据填充特定的SelectField?

来自分类Dev

用wtforms填充PasswordField

来自分类Dev

WTForms文件验证限制

来自分类Dev

WTForms SelectMultipleField:禁用验证

来自分类Dev

如何使烧瓶wtforms SelectField看起来像一个下拉列表?

来自分类Dev

如何使烧瓶wtforms SelectField看起来像一个下拉列表?

来自分类Dev

如何使用WTForms填充对象列表?

来自分类Dev

动态SelectField验证失败,并显示:“无效选择”

来自分类Dev

No module named flask.ext.wtf.SelectField

来自分类Dev

具有UUID的Flask-WTF selectfield

来自分类Dev

检查烧瓶中使用的wtforms的版本-wtforms

Related 相关文章

  1. 1

    使用 SQL 查询填充 WTForms SelectField

  2. 2

    WTForms 似乎无法验证 SelectField 框

  3. 3

    Flask / Python / WTForms 验证和动态设置 SelectField 选项

  4. 4

    Flask-WTForms和带有关系的SQLAalchemy SelectField

  5. 5

    Python Flask WTForms:动态SelectField返回“无效选择”

  6. 6

    SelectField选项使用WTForms动态填充TextAreaField中的默认值

  7. 7

    在SelectField flask-WTForms中初始化后设置默认值

  8. 8

    wtforms SelectField始终返回None

  9. 9

    如何在Ajax验证中使用WTForms?

  10. 10

    如何在Ajax验证中使用WTForms?

  11. 11

    动态WTForms SelectField显示数据库中表的列标题

  12. 12

    wtforms中的SelectField并通过javascript添加了<option>

  13. 13

    WTForms,具有多个SelectField的表单吗?SelectFieldArray是否存在?

  14. 14

    带有SelectField的WTForms帖子不起作用

  15. 15

    使用WTForms和Flask预先填充编辑表单

  16. 16

    使用Flask-WTF从字典填充WTForms表单

  17. 17

    使用AJAX时wtforms验证不起作用

  18. 18

    Flask-WTForms FileField无法验证

  19. 19

    如何用ajax调用返回的数据填充特定的SelectField?

  20. 20

    用wtforms填充PasswordField

  21. 21

    WTForms文件验证限制

  22. 22

    WTForms SelectMultipleField:禁用验证

  23. 23

    如何使烧瓶wtforms SelectField看起来像一个下拉列表?

  24. 24

    如何使烧瓶wtforms SelectField看起来像一个下拉列表?

  25. 25

    如何使用WTForms填充对象列表?

  26. 26

    动态SelectField验证失败,并显示:“无效选择”

  27. 27

    No module named flask.ext.wtf.SelectField

  28. 28

    具有UUID的Flask-WTF selectfield

  29. 29

    检查烧瓶中使用的wtforms的版本-wtforms

热门标签

归档