Python 如何在Google App Engine中正确保存表单数据

Python 如何在Google App Engine中正确保存表单数据,python,flask,Python,Flask,我有一个电子邮件表单,试图将用户的电子邮件地址保存到数据库中。模型如下所示: class EmailForm(db.Model): email_address = db.EmailProperty title = form.title.data, content = form.content.data 我一直在使用一些教程作为指南,其中表单中的数据是这样保存的: class EmailForm

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

class EmailForm(db.Model):                                                
  email_address = db.EmailProperty
title = form.title.data,
content = form.content.data
我一直在使用一些教程作为指南,其中表单中的数据是这样保存的:

class EmailForm(db.Model):                                                
  email_address = db.EmailProperty
title = form.title.data,
content = form.content.data
当我遵循同样的惯例时,写作

email = form.email_address.data
EmailProperty没有数据属性时出错


我是谷歌应用程序引擎的新手,但在文档中还没有找到答案。谢谢

我想这就是你想要的:

email\u address=db.EmailProperty


电子邮件地址=db。Emaillarry@example.com

我想这就是你想要的:

email\u address=db.EmailProperty


电子邮件地址=db。Emaillarry@example.com

您试图将模型用作表单,这是两件不同的事情

你需要再走一步

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()

您试图将模型用作表单,这是两件不同的事情

你需要再走一步

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()
您使用的是旧的db类,而不是ndb,只需将db替换为ndb即可

使用StringProperty而不是EmailProperty,因此

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

user = UserEmail(email_address='foobar@gmail.com')
user.put()
您使用的是旧的db类,而不是ndb,只需将db替换为ndb即可

使用StringProperty而不是EmailProperty,因此

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

user = UserEmail(email_address='foobar@gmail.com')
user.put()

谢谢Daniel,我想使用NDB,但不确定是使用StringProperty还是EmailProperty。谢谢Daniel,我想使用NDB,但不确定是使用StringProperty还是EmailProperty。