Une "Vue" (View) dans Flask, c'est la fonction qui gère la requête. Elle doit toujours renvoyer une "Réponse".
Jusqu'ici, on a renvoyé des chaînes de caractères (str). Mais on peut faire bien plus.
1. Renvoyer du HTML (le classique)
@app.route('/')
def home():
return '<h1>Bienvenue !</h1><p>Ceci est du HTML.</p>'
Flask comprend que c'est du HTML et ajoute automatiquement l'en-tête Content-Type: text/html.
2. Renvoyer du JSON (pour les API)
Si tu veux créer une API, tu peux renvoyer un dictionnaire Python. Flask (depuis la version 1.1) le convertit automatiquement en JSON.
@app.route('/api/data')
def get_data():
data = {
"nom": "Dupont",
"age": 30,
"ville": "Paris"
}
return data # Renvoie du JSON avec Content-Type: application/json
3. Changer le Code de Statut HTTP
Par défaut, Flask renvoie un code 200 OK. Mais parfois, tu veux dire que quelque chose s'est mal passé (400, 500) ou que quelque chose a été créé (201).
Tu peux renvoyer un tuple : (réponse, status_code).
@app.route('/creer-compte', methods=['POST'])
def create_account():
# ... logique de création ...
return "Compte créé !", 201
Ou plus explicite :
@app.route('/teapot')
def teapot():
return "Je suis une théière", 418
4. Ajouter des En-têtes (Headers)
Si tu as besoin de contrôler les headers (ex: cache, type de contenu spécifique...), renvoie un troisième élément dans le tuple.
@app.route('/custom')
def custom_headers():
headers = {"X-Mon-Header": "SuperValeur"}
return "Regarde les headers !", 200, headers
Résumé
La valeur de retour d'une vue peut être :
- Une
string(HTML). - Un
dict(JSON). - Un tuple
(response, status). - Un tuple
(response, status, headers). - Un objet
Response(si tu veux tout contrôler, on verra ça plus tard).