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

WTForms, how to attach JSON data to the request

我正在使用 WTForms 为 Flask 应用程序构建表单。 此表单的 las 字段是与 google PlacesAPI 配合使用的地址字段,因此它会自动完成用户在该字段中输入的地址。

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

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

我试过的

  1. AJAX

我使用 Jquery Ajax 方法提交了表单,我通过将 WTF-JSON 添加到我的项目中对其进行了验证,它对表单 class 和一些方法进行了 monkeypatches所以它可以将 JSON 处理为 ***kwargs.

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

  1. 添加隐藏输入字段

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

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

问题

执行此操作的正确方法是什么?这是我第一次尝试,所以我很确定这里一定有我想念的方法。非常感谢您的帮助。

考虑到您所解释的场景,选项 # 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,但我推荐它。