I\'m receiving user registration data from an iOS application and I\'d like to use the validators that come with wtforms to make sure the email and password are acceptable. How
Here's a little utility called Flask-Inputs that I'm working on to solve this. The goal is to allow all incoming data (forms, queries, headers, etc) to be validated with wtform validators.
Here's how validation would work with your data:
from flask_inputs import Inputs
from wtforms.validators import Length, Email, ValidationError
class RegisterInputs(Inputs):
json = {
'email': [Email(), unique_email],
'username': [Length(min=3, max=15), unique_username]
}
def unique_email(form, field):
if User.query.filter_by(email=field.data).first():
raise ValidationError('Email is already registered.')
def unique_username(form, field):
if User.query.filter_by(username=field.data).first():
raise ValidationError('Username is already registered.')
@auth.route('/register', methods=['POST'])
def register():
inputs = RegisterInputs(request)
if inputs.validate():
user = User.register_fromJSON(request.json)
db.session.add(user)
db.session.commit()
return jsonify(success=1)
else:
return jsonify(failure=0, errors=inputs.errors)