加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 使用WTForms进行表单验证,并使用Flask中的表单数据自

发布时间:2020-12-20 12:21:33 所属栏目:Python 来源:网络整理
导读:我有一个表单,我必须验证,然后将数据保存在数据库中.我有一个名为Campaign的SQLAlchemy模型,看起来像这样 from flask.ext.sqlalchemy import SQLAlchemydb = SQLAlchemy()class Campaign(db.Model): __tablename__ = 'campaigns' id = db.Column(db.Integer,
我有一个表单,我必须验证,然后将数据保存在数据库中.我有一个名为Campaign的SQLAlchemy模型,看起来像这样

from flask.ext.sqlalchemy import SQLAlchemy

db = SQLAlchemy()
class Campaign(db.Model):
    __tablename__ = 'campaigns'

    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(50))
    priority = db.Column(db.SmallInteger)
    starts_at = db.Column(db.Date)
    ends_at = db.Column(db.Date)
    .... bla bla bla

现在我有一个用于验证的WTForm表单

from flask.ext.wtf import Form,TextField,IntegerField,DateField,Required,NumberRange
class CampaignForm(Form):

    def date_validation(form,field):
        #some validation on date

    name = TextField(validators=[Required()])
    priority = IntegerField(validators=[Required(),NumberRange(min=1,max=100)])
    start_date = DateField(validators=[Required(),date_validation])
    end_date = DateField(validators=[Required(),date_validation])
    ... bla bla bla

现在要验证并保存表单数据,我可以做这样的事情是我的观点

Flask中的代码

class CampaignsView(MethodView):
    def post(self):
        """
        For creating a new campaign
        """
        form = CampaignForm(request.form)
        if form.validate():
            campaign = Campaign(form.name.data,form.priority.data,and so on )
            session.add(campaign)

现在上面的代码是愚蠢的,因为我必须在视图中硬编码每个字段名称.还有其他方法可以用表单字段填充模型的字段吗?
谢谢

解决方法

您可以像这样使用.populate_obj方法:

if form.validate_on_submit():
    campaign = Campaign()
    form.populate_obj(campaign)

另请查看docs.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读