使用 flask_restful 显示某些院系的所有学生姓名
Display all the names of students from certain faculties using flask_restful
我有一个名为 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 显示某些院系(系)的所有学生姓名。如果没有找到,必须return JSON object {'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:5000/student/name/FTTI
结果必须像这样
http://127.0.0.1:5000/student/name/FTTI
正确的代码应该怎么写?
因为你的代码是这样的:当你看到一个人有部门
你想要的:return 名字(所以它只有 return 第一个)你需要做的是等到循环结束然后 return 拥有这个的人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}
如果您使用过调试器,您就会发现问题,所以我建议您使用它,以便下次遇到此类问题时使用。
我有一个名为 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 显示某些院系(系)的所有学生姓名。如果没有找到,必须return JSON object {'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:5000/student/name/FTTI
结果必须像这样 http://127.0.0.1:5000/student/name/FTTI
正确的代码应该怎么写?
因为你的代码是这样的:当你看到一个人有部门
你想要的:return 名字(所以它只有 return 第一个)你需要做的是等到循环结束然后 return 拥有这个的人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}
如果您使用过调试器,您就会发现问题,所以我建议您使用它,以便下次遇到此类问题时使用。