Python Flask-WTForm-将表单数据作为非类型而不是字符串获取

Python Flask-WTForm-将表单数据作为非类型而不是字符串获取,python,flask,sqlalchemy,wtforms,flask-wtforms,Python,Flask,Sqlalchemy,Wtforms,Flask Wtforms,为了解决这个问题,我在互联网上搜索了一段时间 我正在开发一个概念证明,一个简单的输入输出数据输入应用程序 但是,我正在使用的表单不会输出我的非类型值,因为我正试图使用过滤器,如此stackoverflow线程所示: 但是结果并不像预期的那样,因为我仍然只接收字符串 我的表格 伦德尔 输入 输出 如您所见,office和event type是作为字符串对象出现的,其值为“\uuu None” 如果可以让表单处理'或'\uu None'到内置非类型的翻译,有什么想法吗 编辑:个人/办公室的架构

为了解决这个问题,我在互联网上搜索了一段时间

我正在开发一个概念证明,一个简单的输入输出数据输入应用程序

但是,我正在使用的表单不会输出我的非类型值,因为我正试图使用
过滤器
,如此stackoverflow线程所示:

但是结果并不像预期的那样,因为我仍然只接收字符串

我的表格 伦德尔 输入

输出

如您所见,office和event type是作为字符串对象出现的,其值为“\uuu None”

如果可以让表单处理
'
'\uu None'
到内置
非类型的翻译,有什么想法吗

编辑:个人/办公室的架构



您的筛选器需要考虑该值可能是字符串值
“\uu None”
,当前您的筛选器只是检查是否缺少该值。类似于以下的东西应该可以工作(未经测试)

你在干什么

print request.form['event_date']
所以基本上你只是在打印浏览器发布的数据。您甚至没有使用您创建的
MyForm
类。您需要将
请求.form
数据传递给
MyForm
类,以便它可以对其进行解析。然后使用MyForm类实例

你需要像这样做

def myform():
    if request.method == 'GET':
        form = MyForm()
        return render_template('my_form.html', form=form)
    else:
        form = MyForm(request.form)
        if form.validate():
            print form.event_date.data
            print form.office.data
            print form.person.data
            print form.event_type.data

有关更多详细信息,请浏览如何在视图中处理表单。

这是我缺少的,但有一个简单的问题,对于我来说,我必须删除
if form.validate()
,以使打印命中。。。不确定为什么可以始终打印表单的错误dict
form.errors
,查看表单验证失败的原因。
class Person(Base):
    __tablename__ = 'people'

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(64), nullable=False)
    political_party = Column(String(64), nullable=False)
    ap_candidate_id = Column(String(64), nullable=False)

    def __repr__(self):
        return self.name


class Office(Base):
    __tablename__ = 'offices'

    id = Column(Integer, primary_key=True, autoincrement=True)
    desc = Column(String(64), nullable=False)

    def __repr__(self):
        return self.desc


class Event(Base):
    __tablename__ = 'events'

    id = Column(Integer, primary_key=True, autoincrement=True)
    event_date = Column(DateTime, nullable=False)
    office_id = Column(Integer, ForeignKey(Office.id))
    office = relationship('Office', backref='events')
    winner_id = Column(Integer, ForeignKey(Person.id))
    winner = relationship('Person', foreign_keys=winner_id, backref='events_won')
    loser_id = Column(Integer, ForeignKey(Person.id))
    loser = relationship('Person', foreign_keys=loser_id, backref='events_lost')
    event_type_id = Column(Integer, ForeignKey(EventType.id))
    event_type = relationship('EventType', backref='events')
    state_id = Column(Integer, ForeignKey(State.id))
    state = relationship('State', backref='state_events')

    def __repr__(self):
        return '{0} - {1}'.format(self.office, self.event_date)
 person = StringField('Person', filters=[lambda x: x or None, lambda x: None if x == '__NONE' else x])
print request.form['event_date']
def myform():
    if request.method == 'GET':
        form = MyForm()
        return render_template('my_form.html', form=form)
    else:
        form = MyForm(request.form)
        if form.validate():
            print form.event_date.data
            print form.office.data
            print form.person.data
            print form.event_type.data