モーニングフェラス!TypeError: 'RegistrationForm'オブジェクトは呼び出し可能ではありません
私はFlaskフォームでいくつかの問題に直面しています。ここでは、コード(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を呼び出すことはできません、LoginFormはAUTH/login.htmlと上にレンダリングされます、上のコードスニペットはauth/register.htmlのエラーにのみ焦点を当てます。
# -*- 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')
トレースバック
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
私はタイプミスやディレクトリのためにダブルチェックしましたが、すべてが細かいようだが...私は、この(私の最初のウェブサイト上でこだわっているので、この貧しい人々にハード行かないでください。 dev ...)。私はあなたの理解と時間をありがとう!
あなたの 'RegistrationForm'パートを追加してください。 – McGrady
なぜ 'form = form'だけでなく、' form = form( 'utf8') 'をやっているのですか? – bernie
私はUnicodeDecodeエラーを叫ぶので...私はpython2.7のデフォルトのエンコーディングは 'ascii'だと信じています –