使用flask_restful显示来自某些系的学生的所有姓名

问题描述 投票:0回答:1

我有一个名为data.py的json数据

students= [
{'name': 'Andika',
 'dept': 'FTTI',
 'gpa': 3.2,},
{'name': 'Budi',
 'dept': 'FTTI',
 'gpa': 3.7,},
{'name': 'Iman',
 'dept': 'FTTI',
 'gpa': 3.4,}
{'name': 'Mia',
 'dept': 'FES',
 'gpa': 3.9,},
{'name': 'Fajar',
 'dept': 'FES',
 'gpa': 2.9,}
]

我尝试使用Flask_restful API显示来自某些系(系)的学生的所有姓名。如果未找到,则必须返回JSON对象{'学生名称':'None'},404

这里是我的代码,名称为student.py

from flask import Flask
from flask_restful import Resource, Api
from data import students

app = Flask(__name__)
api = Api(app)
class StudentDept(Resource):
    def get(self, dept):
        names=[]
        for student in students:
            names.append(student['name'])
            if student['dept']==dept:
                return {'studentnames':names}
        return {'studentnames':'None'}, 404

api.add_resource(StudentDept, '/student/name/<string:dept>')
app.run(port=5000, debug=True)

但是结果仅在其中出现1个名称http://127.0.0.1:5000/student/name/FTTI

结果必须这样http://127.0.0.1:5000/student/name/FTTI

应该如何使用正确的代码?

python json flask flask-restful
1个回答
0
投票
这是因为您的代码是这样工作的:当您看到一个有部门的人时您想要的:返回名称(因此它仅返回第一个),您需要做的是等到循环结束后再返回拥有此dept的人员

class StudentDept(Resource): def get(self, dept): names=[] right_dept = [] for student in students: names.append(student['name']) if student['dept']==dept: right_dept.append(student['name']) if len(right_dept) == 0: return {'studentnames':'None'}, 404 else: return {'studentnames':right_dept}

如果您曾经使用过调试器,那么您会看到问题,我建议您下次遇到此类问题时使用它。
© www.soinside.com 2019 - 2024. All rights reserved.