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
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
Okay, ich ging weiter und aktualisiert die HTML-Vorlage – orangeandgrey