python - TypeError: 'Required' object is not iterable Flask WTF Forms -
i following http://code.tutsplus.com/tutorials/intro-to-flask-signing-in-and-out--net-29982 tutorial develop own application.
i tried create signupform encountered error:
typeerror: 'required' object not iterable my routes page is
from cafe_klatch import app flask import render_template,request,flash forms import contactform, signupform models import db @app.route('/') @app.route('/index') def index(): return render_template('index.html') @app.route('/contact', methods = ['get','post']) def contact(): form1 = contactform() if request.method == 'post': if form.validate() == false: flash('all fields required.') return render_template('contact.html',form = form) else: return 'form posted.' elif request.method == 'get': return render_template('contact.html',form = form) @app.route('/signup', methods =['get','post']) def signup(): form = signupform() if request.method == 'post': if form.validate() == false: return render_template('signup.html',form = form) else: return "[1] create new user [2] sign in user [3] redirect user's profile" elif request.method == 'get': return render_template('signup.html',form = form) this models.py code
from flask.ext.sqlalchemy import sqlalchemy werkzeug import generate_password_hash, check_password_hash db = sqlalchemy() class user(db.model): __tablename__ = 'users' id = db.column(db.integer, primary_key = true) userid = db.column(db.string(30), unique = true) email = db.column(db.string(100), unique = true) pwdhash = db.column(db.string(100)) birthdate = db.column(db.datetime) zipcode = db.column(db.integer) country = db.column(db.string(100)) def __init__(self,userid,email,password,birthdate,zipcode,country): self.userid = userid.title() self.email = email.lower() self.set_password(password) self.birthdate = birthdate self.zipcode = zipcode self.country = country def __repr__(self): return '<user %r>' % self.username def set_password(self,password): self.pwdhash = generate_password_hash(password) def check_password(self,password): return check_password(self.pwdhash, password) this forms.py code
from flask.ext.wtf import form wtforms import textfield, textareafield, submitfield, integerfield, validators, validationerror,passwordfield, datefield models import db, user class contactform(form): name = textfield("name", [validators.required("please enter name.")]) email = textfield("email", [validators.required("please enter email address."), validators.email("please enter email address.")]) subject = textfield("subject", [validators.required("please enter subject.")]) message = textareafield("message", [validators.required("please enter message.")]) submit = submitfield("send") class signupform(form): userid = textfield("userid", [validators.required("please enter user id")]) email = textfield("email", [validators.required("please enter email address."), validators.email("please enter email address.")]) password = passwordfield('password', [validators.required("please enter password.")]) birthdate = datefield("birthdate",validators.required("please enter birthdate")) zipcode = integerfield("zipcode",[validators.required("please enter zipcode")]) country = textfield("country", [validators.required("please enter country")]) submit = submitfield("create account") def __init__(self, *args, **kwargs): form.__init__(self, *args, **kwargs) def validate(self): if not form.validate(self): return false user = user.query.filter_by(email = self.email.data.lower()).first() if user: self.email.errors.append("that email taken") return false else: return true can 1 explain error is?
you supposed pass list of validators, missing [ ... ] in declaration of birthdate field in signupform. should read:
birthdate = datefield("birthdate", [validators.required("please enter birthdate")])
Comments
Post a Comment