Flask request.json来dict

Seb*_*ian 10 python jquery json dictionary flask

我正在努力使用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);
       }
}); 
Run Code Online (Sandbox Code Playgroud)

基本上我添加数据参数让服务器方法这是一个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")
Run Code Online (Sandbox Code Playgroud)

所以,request.json返回一个字符串:

{'ajax':'真'}

当然,当试图访问json ['ajax']时app会中断,我得到一个BAD RESPONSE错误信息.我认为这会给我一个python dict,因为否则request.json和request.data之间的区别是两个都是字符串.

如何在ajax调用中传递所有数据的python dict?它取决于我定义contentType的方式吗?它是否依赖于JSON.stringify的使用?

将非常感谢帮助!谢谢

Seb*_*ius 13

由于请求的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")
Run Code Online (Sandbox Code Playgroud)

我目前无法访问我的开发机器,因此我没有对此进行测试,但它应该从我对文档的理解中发挥作用.