1

我有一个电子邮件表单,我试图将用户的电子邮件地址保存到数据库中。该模型如下所示:

class EmailForm(db.Model):                                                
  email_address = db.EmailProperty

我一直在使用一些这样的教程作为指南,其中表单中的数据保存如下:

title = form.title.data,
content = form.content.data

当我遵循相同的约定时,写作

email = form.email_address.data

有一个错误,即 EmailProperty 没有数据属性。

我是 Google App Engine 的新手,但我没有在文档中找到答案。谢谢!

4

3 回答 3

5

您正在尝试将模型用作表单,这是两件不同的事情。

你需要另一个步骤

from flaskext import wtf
from flaskext.wtf import validators

class EmailModel(db.Model):
    email_address = db.EmailProperty

class EmailForm(wtf.Form):
    email = wtf.TextField('Email Address', validators=[validators.Email()])

现在,在您看来,您可以像这样使用表单。

@app.route('/register', methods=['POST']
def register():
    form = EmailForm()
    if form.validate_on_submit():
        # This part saves the data from the form to the model.
        email_model = EmailModel(email_address = form.email.data)
        email.put()
于 2013-07-09T00:05:29.373 回答
0

我想这就是你要找的东西: https ://developers.google.com/appengine/docs/python/datastore/typesandpropertyclasses#Email

email_address = db.EmailProperty()

email_address = db.Email("larry@example.com")

于 2013-07-08T23:15:54.517 回答
0
  1. 您正在使用旧的 db 类,使用 ndb,只需将 db 替换为 ndb (https://docs.google.com/document/d/1AefylbadN456_Z7BZOpZEXDq8cR8LYu7QgI7bt5V0Iw/edit?ndplr=1&pli=1

  2. 使用 StringProperty 而不是 EmailProperty,所​​以..

    class UserEmail(ndb.Model):                                                
      email_address = ndb.StringProperty()
    
  3. 要将模型放入数据存储区,请执行此操作

    user = UserEmail(email_address='foobar@gmail.com')
    user.put()
    
于 2013-07-10T19:02:16.907 回答