Morning Fellas!TypeError: 'RegistrationForm' Objekt ist nicht aufrufbar
Ich habe einige Probleme mit einer Flask-Form. Hier ist der Code (python2.7):
views.py
# third-parties imports
from flask import flash, redirect, render_template, url_for
from flask_login import login_required, login_user, logout_user
# local imports
from . import auth
from forms import LoginForm, RegistrationForm
from .. import db
from ..models import Empregado
@auth.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
empr = Empregado(email=form.email.data,
username=form.username.data,
first_name=form.first_name.data,
last_name=form.last_name.data,
password=form.password.data)
db.session.add(empr)
db.session.commit()
flash('Registration complete! Go ahead and Login!')
# done registration. Heads for login
return redirect(url_for('auth.login'))
# When FLASK_DEBUG = 1, it yells a TypeError on the following line
return render_template('auth/register.html', form=form('utf8'), title='Register')
forms.py
Altough Registrationform ist nicht aufrufbar ist Loginform gemacht auf Auth/login.html , so dass das Codefragment nur auf den Fehler bei auth/register.html fokussiert ist.
# -*- coding: utf-8 -*-
# app/auth/forms.py
from flask_wtf import FlaskForm
from wtforms import PasswordField, StringField, SubmitField, ValidationError
from wtforms.validators import DataRequired, Email, EqualTo
from ..models import Empregado
class RegistrationForm(FlaskForm):
email = StringField('Email', validators=[DataRequired(), Email()])
username = StringField('User', validators=[DataRequired()])
first_name = StringField('First name', validators=[DataRequired()])
last_name = StringField('Last name', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired(), EqualTo('retype')])
retype = PasswordField('Retype Password')
submit = SubmitField('submit')
def validate_email(self, field):
if Empregado.query.filter_by(email=field.data).first():
raise ValidationError('Email already used')
def validate_username(self, field):
if Empregado.query.filter_by(username=field.data).first():
raise ValidationError('User already exists')
class LoginForm(FlaskForm):
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
Traceback
File "~/Sources/py2/business_masters/app/auth/views.py", line 40, in register
return render_template('auth/register.html', form=form('utf8'), title='Register')
TypeError: 'RegistrationForm' object is not callable
Ich habe für Tippfehler und Verzeichnisse doppelt geprüft, aber alles scheint in Ordnung ... Ich bin fest auf dieser (meiner ersten Website, also bitte, gehen Sie nicht hart an diesem armen dev ...). Ich schätze Ihr Verständnis und Zeitgenossen!
Bitte fügen Sie Ihr 'RegistrationForm' Teil hinzu. – McGrady
Warum machst du 'form = form ('utf8')' und nicht nur 'form = form'? – bernie
Weil es an mir schreit UnicodeDecode Fehler, wenn ich nicht ... Ich glaube, python2.7 Standardcodierung ist 'ascii' –