6 votes

Comment retourner la liste sur Python et Flask ?

J'essaie de retourner cette liste dans flask. Teacher est une classe et renvoie des objets.

@app.route('/v1/teachers', methods=['GET'])
def getTeachers():
  teachers = []
  for teacher in Teacher.objects:
    teachers.append(teacher)
  return teachers

Ce code renvoie l'erreur typique de TypeError: 'list' object is not callable The view function did not return a valid response.

Je deviens folle et je ne sais pas ce qui se passe. Quelqu'un le sait-il ?

Merci !

EDIT :

J'ai déjà trouvé une solution. Le problème n'était pas de retourner la liste, mais de sérialiser les objets en JSON.

@app.route('/v1/teachers', methods=['GET'])
def getTeachers():
  teachers = []
  for teacher in Teacher.objects:
     teacherJson = teacher.to_json()
     teacherData = json.loads(teacherJson)
     teachers.append(teacherData)
  return jsonify({'teachers': teachers})

Merci pour votre aide.

15voto

shijin Points 118

Vous ne pouvez pas renvoyer une liste directement à partir d'une vue flask.

from flask import jsonify
@app.route('/v1/teachers', methods=['GET'])
def getTeachers():
   teachers = []
   for teacher in Teacher.objects:
      teachers.append(teacher)
   return jsonify(teachers)

2voto

Samaksh Jain Points 494

Vous renvoyez une liste, Flask s'attend à ce qu'une réponse soit renvoyée.

from flask import jsonify

@app.route('/v1/teachers', methods=['GET'])
def getTeachers():
  teachers = []
  for teacher in Teacher.objects:
    teachers.append(teacher)
  return jsonify({teachers: [teachers]})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X