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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |