当前位置: 首页 > 知识库问答 >
问题:

如何解决类型错误:在python flask api中,视图函数未返回有效响应

罗源
2023-03-14

我正在尝试从mongoDB数据库中检索数据,并尝试将该响应传递给前端reactjs应用程序。

但是我得到了这个错误,我不知道为什么会这样:

TypeError:视图函数未返回有效响应。返回类型必须是字符串、dict、元组、响应实例或WSGI可调用,但它是列表

我需要的是:

我需要检索所有mongodb文档并将其传递到前端应用程序中,以便我可以使用reactjs映射它以显示在表中。

这就是我正在尝试的,这给了我一个错误:

@app.route("/bemployees", methods=["GET"])
def retrieve_all_documents():
    client = pymongo.MongoClient(
        "<url>"
    )

    # database
    db = client.cdap

    # collection (table)
    collection = db.predicted_values

    documents_ = []

    for b in collection.find():

        documents_.append({'Age' :b['Age'] ,'DailyRate': b['DailyRate'],
                   'DistanceFromHome': b['DistanceFromHome'] , 'EnvironmentSatisfaction': b['EnvironmentSatisfaction'],
                   'HourlyRate':b['HourlyRate'],'JobInvolvement': b['JobInvolvement'],
                   'JobLevel': b['JobLevel'],'JobSatisfaction' :b['JobSatisfaction'],
                   'MonthlyIncome': b['MonthlyIncome'], 'MonthlyRate' :b['MonthlyRate'],
                   'NumCompaniesWorked': b['NumCompaniesWorked'],'PercentSalaryHike' :b['PercentSalaryHike'],
                   'RelationshipSatisfaction': b['RelationshipSatisfaction'],'StandardHours' :b['StandardHours'],
                   'TotalWorkingYears': b['TotalWorkingYears'],'TrainingTimesLastYear' :b['TrainingTimesLastYear'],
                   'YearsAtCompany': b['YearsAtCompany'],'YearsInCurrentRole' :b['YearsInCurrentRole'],
                   'YearsSinceLastPromotion': b['YearsSinceLastPromotion'],'YearsWithCurrManager' :b['YearsWithCurrManager'],
                   'MaritalStatus_': b['MaritalStatus_'],'JobRole_' :b['JobRole_'],
                   'Gender_': b['Gender_'],'EducationField_' :b['EducationField_'],
                   'Department_': b['Department_'],'BusinessTravel_' :b['BusinessTravel_'],
                   'OverTime_': b['OverTime_'],'Over18_' :b['Over18_'],
                   'empName': b['empName'],'empID' :b['empID'],
                   'PerformanceScore': b['PerformanceScore'],
                   'id': str(b['_id']) })

    return documents_ 

有人能帮我解决这个问题吗?

共有1个答案

拓拔欣嘉
2023-03-14

Flask视图无法返回列表。处理此问题的一种方法是将列表转换为JSON字符串:

import json
from flask import Response

@app.route("/bemployees", methods=["GET"])
def retrieve_all_documents():
    client = pymongo.MongoClient(
        "<url>"
    )

    # database
    db = client.cdap

    # collection (table)
    collection = db.predicted_values

    documents_ = []

    for b in collection.find():

        documents_.append({'Age' :b['Age'] ,'DailyRate': b['DailyRate'],
                   'DistanceFromHome': b['DistanceFromHome'] , 'EnvironmentSatisfaction': b['EnvironmentSatisfaction'],
                   'HourlyRate':b['HourlyRate'],'JobInvolvement': b['JobInvolvement'],
                   'JobLevel': b['JobLevel'],'JobSatisfaction' :b['JobSatisfaction'],
                   'MonthlyIncome': b['MonthlyIncome'], 'MonthlyRate' :b['MonthlyRate'],
                   'NumCompaniesWorked': b['NumCompaniesWorked'],'PercentSalaryHike' :b['PercentSalaryHike'],
                   'RelationshipSatisfaction': b['RelationshipSatisfaction'],'StandardHours' :b['StandardHours'],
                   'TotalWorkingYears': b['TotalWorkingYears'],'TrainingTimesLastYear' :b['TrainingTimesLastYear'],
                   'YearsAtCompany': b['YearsAtCompany'],'YearsInCurrentRole' :b['YearsInCurrentRole'],
                   'YearsSinceLastPromotion': b['YearsSinceLastPromotion'],'YearsWithCurrManager' :b['YearsWithCurrManager'],
                   'MaritalStatus_': b['MaritalStatus_'],'JobRole_' :b['JobRole_'],
                   'Gender_': b['Gender_'],'EducationField_' :b['EducationField_'],
                   'Department_': b['Department_'],'BusinessTravel_' :b['BusinessTravel_'],
                   'OverTime_': b['OverTime_'],'Over18_' :b['Over18_'],
                   'empName': b['empName'],'empID' :b['empID'],
                   'PerformanceScore': b['PerformanceScore'],
                   'id': str(b['_id']) })

    return Response(json.dumps(documents_), mimetype='application/json')
 类似资料:
  • 问题内容: 错误信息: 而我的代码: 并且my-form.html是: 如果我在其中放置一个while循环,它将永远加载。 然后输入比当前页面永久加载的更高的温度。如果我使用上面列出的当前代码,则会出现错误。 问题答案: 以下内容不返回响应: 你必须返回类似或的内容。 这样可以解决问题

  • 我编写了一段代码,使用promise从异步调用返回一些数据。当我尝试执行时,我得到“语法错误等待仅在异步函数中有效”,并且我无法得到代理应用程序请求。。。错误:连接错误。 我不确定为什么会出现这些错误 在函数调用之前,我尝试过使用异步,但没有成功 我希望变量体具有从httpGet函数返回的数据。现在我得到了上面提到的错误。但是不使用wait,我得到body的值为{}。 请帮帮忙

  • 在典型的 Rust 函数中,返回的值若是有个错误的类型,将导致出现如下所示的错误: error[E0308]: mismatched types --> src/main.rs:2:12 | 1 | fn foo() { | - expected `()` because of default return type 2 | return "foo" |

  • 我在处理我的第一个烧瓶Web应用程序时遇到了此错误。在这个应用程序中,我试图通过使用Uber H3和haversine公式来获得两点之间的距离。我是这方面的初学者,所以任何帮助将不胜感激。 类型错误:视图函数未返回有效响应。返回类型必须是字符串、字典、元组、响应实例或 WSGI 可调用,但它是一个 int。

  • 我在尝试使用Maven构建ear时遇到了这个错误。