2016-08-11 1 views
-1

Ich habe Probleme, Fehlermeldungen in Flask zu rendern. Ich vermute, dass dies mit den Bauplänen zusammenhängt. Zuvor war die Logik, die in views.py zu sehen war, im Blueprint der Benutzer enthalten, aber ich habe sie seitdem auf den Hauptentwurf übertragen. Seither kann ich keine Fehlermeldungen mehr rendern.Formularüberprüfungsnachricht wird nicht angezeigt - Flask

Die spezifische Linie Ich glaube, ich habe Probleme mit ist:

self.email.errors.append ("Diese E-Mail ist bereits registriert")

Projekt/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 

Projekt/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> 

Projekt/user/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 

Wenn zu debuggen versuchen, den Wert für 'print Benutzers aus ist das:

project.user.forms.RegisterForm Objekt bei 0x7fa436807698

+0

bitte Ihre hTML-Vorlage zur Verfügung stellen, wie Ihr request.form sieht [ ‚etwas‘] ist nicht deklariert Sie einfach beschlossen, es zu Ihren variablen „Form“ zuweisen daher das Objekt an 0x7fa436807698, du bist nicht t holen die einzelnen Elemente von Ihrem Objekt – glls

+0

Okay, ich ging weiter und aktualisiert die HTML-Vorlage – orangeandgrey

Antwort

0

zum Laufen bekommen, @glls, Sie correct.Rewrote wurde der Code wie:

@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

Sie sind willkommen – glls