修剪数据帧字符串会导致数据无法正确发送到前端

时间:2019-02-25 18:08:45

标签: python json flask

我正在尝试将Flask后端的JSON数据发送到JS前端。

准备数据的Flask函数如下:

from flask import Flask, jsonify
import pandas as pd

@app.route('/get_data')
def get_data():
    projects = pd.read_excel('data.xlsx').fillna('Unassigned')

    string_df  = projects.select_dtypes(['object']) # select a subset of df containing only string columns
    projects[string_df.columns] = string_df.apply(lambda col: col.str.strip()) # trim all strings in the subset
    projects = projects.to_dict(orient='records')

    options = get_options(projects)

    response = {
        'projects': projects,
        'options': options,
    }

    return jsonify(response)

def get_options(projects):
    """Returns dropdowns options"""

    options = {}

    for project in projects:
        region = project['Region']
        ma = project['MA/Segment']
        market = project['Market']
        subsegment = project['Subsegment']

        options \
            .setdefault(region, {}) \
            .setdefault(ma, {}) \
            .setdefault(market, []) \
            .append(subsegment)

        options[region][ma][market] = list(set(options[region][ma][market]))

    return options

在前端,我这样获取它:

function get_data(callback) {
    console.log('get_data')
    var url = "{{ url_for('get_data') }}"
    fetch(url,
      {}
    )
    .then(response => response.json())
    .then(json =>callback(json))
  }

function main(json) {
    console.log('main')
    console.log(json)
}

get_data(main)

正在调用get_data函数,但是从未调用main函数。该应用程序只是不加载数据,浏览器控制台中没有任何错误消息。

我已经确定了引起问题的那一行:

projects[string_df.columns] = string_df.apply(lambda col: col.str.strip())

如果我注释掉那行,一切都会很好,但是很明显,我会在数据中得到未修饰的字符串。

此外,两个Flask函数都可以像普通的Python函数一样在Flask上下文之外正常工作。

导致停靠的这条线可能有什么问题?我怀疑以这种方式修剪琴弦可能会导致Flask的jsonify出现故障。

0 个答案:

没有答案