我使用WTForms为Flask应用程序构建表单。 此表单的las字段是与Google PlacesAPI一起使用的地址字段,因此它会自动填充用户在该字段中引入的地址。
我希望能够在用户选择地址时保存此PlacesAPI生成的所有数据,但我很难找到将该数据发送到服务器的正确方法。
我有一个带有MongoDB的Flask作为后端。
我尝试了什么
我使用Jquery Ajax方法提交表单,我通过将WTF-JSON添加到我的项目来验证它,它monkeypat使用Form类和一些方法,因此它可以将JSON处理为*** kwargs。
问题:这使我无法在表单验证时轻松重定向用户。
我可以添加一个隐藏的输入字段,我将所有地址JSON添加为字符串,然后在后端处理它
问题:不知怎的,这个simes hacky,我想知道是否有更好的方法
问题
这样做的正确方法是什么?这是我第一次尝试,所以我很确定必须有一种我在这里失踪的方式。非常感谢你的帮助。
答案 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
,但我推荐它。