在提交之前验证WTForm

问题描述:

离开字段之后但在提交之前是否可以验证WTForm字段? 例如,输入用户名后,在用户单击提交之前,会验证该字段是否可用并显示复选标记。在提交之前验证WTForm

+2

的确是这样,与'JavaScript'。 – dm295

更改字段时,执行检查并更改相邻节点中的文本。有些东西可以直接在浏览器中验证。要根据服务器上的数据进行验证,请使用JavaScript将请求发送到检查数据并返回JSON响应的视图。

@app.route('/username-exists', methods=['POST']) 
def username_exists(): 
    username = request.form['username'] 
    exists = check_if_user_exists(username) 
    return jsonify(exists=exists) 
<input id='username' name='username'> 
<p id='username-status'></p> 
var username_input = $('#username'); 
var username_status = $('#username-status'); 

$('#username').on('focusout', function() { 
    $.post(
     "{{ url_for('username_exists') }}", 
     { 
      username: username_input.val() 
     }, 
     function (data) { 
      username_status.text(data.exists ? '✔️' : ''); 
     } 
    ); 
}); 

这个例子使用jQuery的,但概念是不针对任何库。

或者,将整个表单发布到仅验证字段的单独视图,然后return jsonify(form.errors)并在浏览器中对其进行操作。代码基本上与上述相同,并有一些额外的逻辑将错误消息放在正确的字段旁边。

记得还是验证数据提交表单的时候,因为请求可以在浏览器之外进行,与其他