2016-02-02 53 views
0

enter image description here燒瓶跆拳道表單驗證意外激活

我正在修改cookiecutter瓶的應用程序。

我有,看起來格式如:

<form class="form-inline" id="registerForm" method="POST" action="/register/" role="form"> 
      <div class="form-group"> 
      <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter your email address"> 
      </div> 
      <button type="submit" class="btn btn-warning btn-lg">Submit!</button> 
     </form>    

和「用戶」的模式,看起來像:

class User(UserMixin, SurrogatePK, Model): 

    __tablename__ = 'users' 
    username = Column(db.String(80), unique=True, nullable=True) 
    email = Column(db.String(80), unique=True, nullable=False) 
    #: The hashed password 
    password = Column(db.String(128), nullable=True) 
    created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow) 
    first_name = Column(db.String(30), nullable=True) 
    last_name = Column(db.String(30), nullable=True) 
    active = Column(db.Boolean(), default=False) 
    is_admin = Column(db.Boolean(), default=False) 
    confirmed = db.Column(db.Boolean, nullable=False, default=False) 
    confirmed_on = db.Column(db.DateTime, nullable=True) 

    def __init__(self, username, email, password=None, **kwargs): 
     db.Model.__init__(self, username, email=email, **kwargs) 
     if password: 
      self.set_password(password) 
     else: 
      self.password = None 

我的計劃是隻要求一個電子郵件,驗證它,然後讓用戶在驗證並登錄後填寫剩餘的字段。因此,我希望首先創建整個對象,但只填寫電子郵件字段。當我通過僅提交電子郵件測試了電子郵件註冊表單(上面的HTML)時,我得到了截圖。我知道cookie切割器使用flask-wtf構建的表單,但我不確定爲什麼要激活此表單驗證。爲什麼我的方法錯了?

回答

1

從源代碼就可以知道:user.py

class RegisterForm(Form): 
    username = TextField('Username', validators=[DataRequired(), Length(min=3, max=25)]) 
    first_name = TextField('first_name', validators=[DataRequired(), Length(min=3, max=25)]) 
    last_name = TextField('last_name', validators=[DataRequired(), Length(min=3, max=25)]) 
    email = TextField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)]) 
    password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=40)]) 
    confirm = PasswordField('Verify password', [DataRequired(), EqualTo('password', message='Passwords must match')]) 

你可以看到有6個字段,所有的人都需要(通過DataRequired驗證),這就是爲什麼你請參閱六條錯誤消息。

請注意,cookiecutter-flask只給你基本的結構,你需要自己修改一些文件。