使用flask_restful显示某些院系的所有学生姓名。

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

我有一个名为data.py的json数据,我试图用Flask_restful API来显示某个院系(dept)的所有学生姓名。

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显示某个院系(dept)的所有学生的名字,如果没有找到,必须返回JSON对象{学生姓名': 'None'},404。如果没有找到,必须返回JSON对象{'student names': '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:5000studentnameFTTI。

结果一定是这样的http:/127.0.0.1:5000studentnameFTTI。

正确的代码应该是怎样的?

python json flask flask-restful
1个回答
0
投票

因为你的代码是这样的:当你看到一个人有你想要的dept:返回名字(所以它只返回第一个)你需要做的是,等到循环结束,所以,然后返回有这个的人 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.