如何获取 Flask 请求 JSON 数据作为字典?
Posted
技术标签:
【中文标题】如何获取 Flask 请求 JSON 数据作为字典?【英文标题】:How to obtain Flask request JSON data as dictionary? 【发布时间】:2013-11-26 15:16:48 【问题描述】:我正在努力使用 JQuery ajax 方法和 Flask,试图进行 ajax 调用以检索一些表单。
我的 js 代码如下所示:
$.ajax(
type: 'POST',
url: '/projects/dummyName',
data: JSON.stringify("'ajax': 'True'"),
contentType: 'application/json;charset=UTF-8',
dataType: 'html',
success: function(responseData, textStatus, jqXHR)
$("#myform").text(responseData);
,
error: function (responseData, textStatus, errorThrown)
alert('Error: '+errorThrown + ". Status: "+textStatus);
);
基本上我添加数据参数让服务器方法认为这是一个 ajax 调用。但我只是无法将服务器中的数据作为字典获取。尝试了万种方法,我无法使其工作。
这是虚拟服务器方法:
@app.route('/projects/<name>', methods=['GET', 'POST'])
def projects(name=None):
print(request.json)
print(request.json['ajax'])
if name:
project = db.getProject(name)
form = ProjectForm(project)
if request.json['ajax'] == True:
return render_template("myform.html", form=form)
else:
return render_template("projectView.html", form=form)
else:
return render_template("projects.html")
所以,request.json 返回一个字符串:
'ajax': '真'
当然,当尝试访问 json['ajax'] 时应用程序会中断,并且我收到 BAD RESPONSE 错误消息。我认为这会给我一个 python dict,因为如果两者都是字符串,request.json 和 request.data 之间会有什么区别。
如何获得一个包含在 ajax 调用中传递的所有数据的 python 字典?这是否取决于我定义 contentType 的方式?是否依赖于 JSON.stringify 的使用?
我们将不胜感激! 谢谢
【问题讨论】:
你看过这个链接吗? flask.pocoo.org/docs/patterns/jquery我已经实现了这个,效果很好! 【参考方案1】:由于请求的 mimetype,数据被放入 request.json。我相信你在找get_json
。
@app.route('/projects/<name>', methods=['GET', 'POST'])
def projects(name=None):
req_json = request.get_json()
print(req_json['ajax'])
if name:
project = db.getProject(name)
form = ProjectForm(project)
if req_json['ajax']:
return render_template("myform.html", form=form)
return render_template("projectView.html", form=form)
return render_template("projects.html")
我目前无法访问我的开发机器,所以我没有对此进行测试,但根据我对文档的理解,它应该可以工作。
【讨论】:
我最终使用 $.get() 来检索表单并在 request.args 中传递 'isajax' 参数,这样在解析表单参数时它不会与 WTForms 冲突。最后我使用 $.post() 发送表单的内容。这似乎是最好的方法,因为需要表单或 html 更多的是 GET 而不是 POST 在标题正文中发送 json 数据,只是为了请求一些东西。感谢您的帮助!以上是关于如何获取 Flask 请求 JSON 数据作为字典?的主要内容,如果未能解决你的问题,请参考以下文章
python flask里 post请求,JSON数据获取方式总结