0
respostas

form validation

Eu estou desenvolvendo um projeto python com flask, e estou tendo alguns problemas na parte de validação de formulário. Estou usando o wtforms

...imports

# CONFIGURAÇÕES #


# REGRAS DE VALIDAÇÃO #

def validate_username(form, username):
    if dao.buscar_por_id(username.data):
        raise ValidationError('Esse username já existe')


def validate_email(form, email):
    if dao.busca_por_email(email.data):
        raise ValidationError('Esse email já foi cadastrado')


class ValidaFormulario(Form):
    username = StringField('username', [
        validators.Length(min=4, max=25,
                          message='Username deve ter entre 4 e 25 caracteress'),
        validators.DataRequired(), validate_username
    ])
    email = StringField('email', [validators.DataRequired(), validate_email])
    senha = PasswordField('senha', [
        validators.Length(min=8, max=32,
                          message='Senha deve ter entre 8 e 32 caracteres'),
        validators.EqualTo('confirma', message='Senha confirmada incorretamente'),
        validators.DataRequired()
    ])
    confirma = PasswordField('confirma', [validators.DataRequired()])


# INTEGRAÇÃO WEB #

@app.route('/morgan_assistant')
def index():
    return render_template('index.html')


@app.route('/morgan_assistant/registrar')
def registrar():
    form = ValidaFormulario(request.form)
    return render_template('cadastro.html', form=form)


@app.route('/morgan_assistant/criar', methods=['POST'])
def criar():
    form = ValidaFormulario(request.form)

    if form.validate():
        usuario = Usuario(form.username.data, form.email.data, form.senha.data)
        eh_cadastrado = request.form.get('cadastrado')
        dao.salvar(usuario, eh_cadastrado)
        flash(usuario.id + ' cadastrado com sucesso')
        return redirect(url_for('index'))


@app.route('/morgan_assistant/login')
def login():
    proxima_pagina = request.args.get('logado')
    return render_template('login.html', logado=proxima_pagina)


@app.route('/morgan_assistant/autenticar', methods=['POST'])
def autenticar():
    usuario = dao.buscar_por_id(request.form['username'])
    if usuario:
        if usuario.senha == request.form['senha']:
            session['usuario_logado'] = usuario.id
            flash(usuario.id + ' logou com sucesso!')
            proxima_pagina = request.form['logado']
            return redirect(proxima_pagina)
    else:
        flash('Falha no login, tente novamente!')
        return redirect(url_for('login'))


@app.route('/morgan_assistant/mudar_senha')
def mudar_senha():
    return render_template('alteracaosenha.html')


app.run(debug=True)
{% from "_formhelpers.html" import render_field %}

    <form class="box" action="{{ url_for('criar') }}" method="post">
        <h1>Cadastro</h1>
        <br>
        <p class="description-primary">Coloque seus dados pessoais</p>
        {{ render_field(form.username, 'Username', autofocus=true) }}
        {{ render_field(form.email, 'Email', type='email') }}
        {{ render_field(form.senha, 'Senha') }}
        {{ render_field(form.confirma, 'Confirmar Senha') }}
        <input type="submit" value="Criar conta">
    </form>
{% macro render_field(field, placeholderValue) %}
        <div>
            {{ field(class_='inputField', placeholder=placeholderValue, **kwargs) }}
            {% if field.errors %}
                <ul class=errors>
                    {% for error in field.errors %}
                        <li>{{ error }}</li>
                    {% endfor %}
                </ul>
            {% endif %}
        </div>
    {% endmacro %}

Eu consigo fazer o cadastro de usuário, mas na hora de validar os campos, se eu colococo alguma informação errada, recebo o seguinte erro:

typeerror: the view function did not return a valid response. the function either returned none or ended without a return statement.