WTForms,如何将JSON数据附加到请求

时间:2015-06-20 15:38:51

标签: ajax flask wtforms flask-wtforms wtforms-json

我使用WTForms为Flask应用程序构建表单。 此表单的las字段是与Google PlacesAPI一起使用的地址字段,因此它会自动填充用户在该字段中引入的地址。

我希望能够在用户选择地址时保存此PlacesAPI生成的所有数据,但我很难找到将该数据发送到服务器的正确方法。

我有一个带有MongoDB的Flask作为后端。

我尝试了什么

  1. AJAX
  2. 我使用Jquery Ajax方法提交表单,我通过将WTF-JSON添加到我的项目来验证它,它monkeypat使用Form类和一些方法,因此它可以将JSON处理为*** kwargs。

    问题:这使我无法在表单验证时轻松重定向用户。

    1. 添加隐藏输入字段
    2. 我可以添加一个隐藏的输入字段,我将所有地址JSON添加为字符串,然后在后端处理它

      问题:不知怎的,这个simes hacky,我想知道是否有更好的方法

      问题

      这样做的正确方法是什么?这是我第一次尝试,所以我很确定必须有一种我在这里失踪的方式。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

考虑到您解释的方案,选项#1是最佳选择。将用户重新定向到表单验证页面应该没有任何问题,因为您可以通过XHR进行管理。这是我可以建议的

@catalog.route('/')
@catalog.route('/your_page')
def home():
    if request.is_xhr:
        ## Here you can call the def and store the addresses
        addresses = Address.query.all() 
        json_addresses jsonify({'addresses': addresses)})
        return render_template('your_form_page.html', json_addresses)    

在渲染模板页面时,您传递了更多参数,例如验证消息。

请根据您的功能需要使用is_xhr,但我推荐它。