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.