Aller au contenu principal

3 formations sont désormais disponibles : Python, Flask et JS.

Aller au contenu principal

Routes dynamiques & Convertisseurs

Apprendre Flask : Le Guide Ultime
4 min de lecture
Gratuit

Imaginons que tu as un blog. Tu ne vas pas écrire une route pour chaque article (/article/1, /article/2...). Tu as besoin de routes dynamiques.

La syntaxe <variable>

Tu peux ajouter des parties variables dans l'URL en les mettant entre chevrons < >.

@app.route('/user/<username>')
def show_user_profile(username):
    # username est passé comme argument à la fonction
    return f'Profil de l\'utilisateur : {username}'

Si tu vas sur /user/michel, ça affiche "Profil de l'utilisateur : michel". Si tu vas sur /user/josiane, ça affiche "Profil de l'utilisateur : josiane".

Les Convertisseurs (Typage)

Par défaut, tout ce qui est capturé est une chaîne de caractères (string). Mais si tu veux un ID numérique ?

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # post_id est automatiquement converti en entier (int)
    return f'Article numéro {post_id}'

Si tu vas sur /post/42, post_id sera l'entier 42. Si tu vas sur /post/banane, Flask renverra une 404 Not Found (car "banane" n'est pas un entier). C'est génial pour la validation gratuite !

Les principaux convertisseurs :

  • string : (défaut) accepte tout texte sans slash.
  • int : accepte des entiers positifs.
  • float : accepte des nombres à virgule positive.
  • path : comme string, mais accepte aussi les slashes (utile pour des chemins de fichiers).
  • uuid : accepte des identifiants UUID.

Exemple complexe :

@app.route('/files/<path:filepath>')
def download_file(filepath):
    return f'Téléchargement du fichier : {filepath}'
    # Si URL = /files/images/vacances.jpg
    # filepath = "images/vacances.jpg"