如何在python中解析jsonify对象并以html显示?

时间:2019-06-19 00:04:07

标签: python jquery json ajax flask

我有一个flask应用程序,该应用程序从jsonify函数返回输出,但是在html上显示的输出不是很漂亮。现在,我将解析此输出并对其进行修改,然后再将其返回给html。我试图遍历json输出,但它不允许我这样做。我怎么做?

首先,这是我网页上jsonify函数的输出

  

预测:Apple Cedar rust,99.6459424495697,Bell_Pepper   健康,0.2868120325729251,蓝莓健康,0.05757397739216685

我想要这样的东西

  

预测

     

苹果雪松锈:99.6459424495697

     

红辣椒健康:0.2868120325729251

     

蓝莓健康:0.05757397739216685

现在这是我的app.py文件中相同代码的代码

@app.route('/predict', methods=['GET', 'POST'])
def upload():
    if request.method == 'POST':
        # Get the file from post request
        f = request.files['file']

        # Save the file to ./uploads
        basepath = os.path.dirname(__file__)
        file_path = os.path.join(
            basepath, 'uploads', secure_filename(f.filename))
        f.save(file_path)

        result = model_predict(file_path, model)
        return jsonify(result)

    return None

最后这是我的main.js文件的代码

$.ajax({
    type: 'POST',
    url: '/predict',
    data: form_data,
    contentType: false,
    cache: false,
    processData: false,
    async: true,
    success: function (data) {
        // Get and display the result
        $('.loader').hide();
        $('#result').fadeIn(600);
        $('#result').text(' Prediction:  ' + data);
        console.log('Success!');
    },
});

2 个答案:

答案 0 :(得分:1)

您可以返回一个HTML字符串,该字符串可用作forever div的主体:

在您的#result中,在app.py中:

upload

... result = model_predict(file_path, model) return flask.jsonify({'html':'\n'.join(f'<p>{a}: {b}</p>' for a, b in result)}) 中:

main.js

JavaScript呈现值:

$.ajax({ type: 'POST', url: '/predict', data: form_data, contentType: false, cache: false, processData: false, async: true, success: function (data) { // Get and display the result $('.loader').hide(); $('#result').fadeIn(600); $('#result').append(data.html); //add previously formatted html to div console.log('Success!'); }, }); 中:

app.py

import json result = model_predict(file_path, model) return flask.jsonify({'payload':json.dumps([{'name':a, 'val':b} for a, b in result])}) 中:

main.js

答案 1 :(得分:0)

假设result是传递给jasonify(result)的有效json对象,则需要遍历main.js中的数据对象并以编程方式显示key:value对。 像这样:

// data =  { 'Apple Cedar rust': '99.6459424495697', ...  }
$.each(data,function(key,value){
   $('#results-list').append("<span>"+ key +": " + value + "</span>")
});