2016-08-11 2 views
-1

Je n'arrive pas à récupérer les messages d'erreur dans Flask. Je suppose que c'est lié aux plans. Auparavant, la logique vue dans views.py était dans le plan de l'utilisateur, mais depuis, je l'ai reporté sur le plan principal. De toute façon, depuis lors, je suis incapable d'obtenir des messages d'erreur à rendre.Le message de validation de formulaire n'est pas affiché - Flask

La ligne spécifique, je pense que je vais avoir des problèmes avec est:

self.email.errors.append ("Ce courriel est déjà enregistré")

projet/main/views.py

@main_blueprint.route('/', methods=['GET', 'POST']) 
@main_blueprint.route('/<referrer>', methods=['GET', 'POST']) 
def home(referrer=None): 

    form = RegisterForm(request.form) 

    # prepares response 
    resp = make_response(render_template('main/index.html', form=form)) 
    if form.validate_on_submit(): 
     do_stuff() 
    return resp 

projet/main/index.html

<h1>Please Register</h1> 
<br> 
<form class="" role="form" method="post" action=""> 
    {{ form.csrf_token }} 
    {{ form.email(placeholder="email") }} 
    <span class="error"> 
     {% if form.email.errors %} 
     {% for error in form.email.errors %} 
      {{ error }} 
     {% endfor %} 
     {% endif %} 
    </span> 
    </p> 
    <button class="btn btn-success" type="submit">Register!</button> 
    <br><br> 
    <p>Already have an account? <a href="/login">Sign in</a>.</p> 
</form> 

projet/utilisateur/forms.py

class RegisterForm(Form): 
     email = TextField(
      'email', 
      validators=[DataRequired(), Email(message=None), Length(min=6, max=40)]) 

def validate(self): 
    print "validating" 
    initial_validation = super(RegisterForm, self).validate() 
    if not initial_validation: 
     print "not initial validation" 
     return False 
    user = User.query.filter_by(email=self.email.data).first() 
    print user 
    if user: 
     print self 
     print "error, email already registered" 
     self.email.errors.append("This Email is already registered") 
     return False 
    return True 

Lors d'une tentative de mise au point, la valeur pour l'utilisateur d'impression "de c'est:

objet project.user.forms.RegisterForm à 0x7fa436807698

+0

s'il vous plaît fournir votre modèle html, ressemble à votre Request.Form [ « quelque chose »] n'est pas déclaré que vous simplement décidé de l'attribuer à la variable « forme », d'où l'objet à 0x7fa436807698, vous n'êtes pas t aller chercher les éléments individuels de votre objet – glls

+0

Ok, je suis allé de l'avant et mis à jour le modèle html – orangeandgrey

Répondre

0

eu à travailler, @glls, vous ont été correct.Rewrote le code comme:

@main_blueprint.route('/', methods=['GET', 'POST']) 
@main_blueprint.route('/<referrer>', methods=['GET', 'POST']) 
def home(referrer=None): 

    # prepares response 
    resp = make_response(render_template('main/index.html', form=form)) 
    if form.validate_on_submit(): 
     do_stuff() 

    form = RegisterForm(request.form) 

    return resp 
+0

vous êtes les bienvenus – glls