FAQ

Questions fréquemment posées

Cette page regroupe les questions les plus fréquemment posées par les étudiants au sujet du cours LINFO1002.

Astuce

Vous êtes toujours perdu? Contactez le tuteur !

Installation et Configuration

Q: Je n'arrive pas à installer Flask, que faire ?

R: Assurez-vous d'abord d'avoir Python 3.8 ou supérieur installé. Ensuite, créez un environnement virtuel et installez Flask dedans :

python3 -m venv venv
source venv/bin/activate  # Sur Windows: venv\Scripts\activate
pip install flask

Q: La commande ``flask run`` ne fonctionne pas

R: Vérifiez que :

  1. Vous avez bien activé votre environnement virtuel

  2. Flask est installé (pip list | grep -i flask)

  3. Vous avez spécifié votre application avec --app : flask --app mon_app run

  4. Le nom de votre fichier Python est correct

Q: Mon serveur Flask ne se lance pas sur le port 5000

R: Le port 5000 est peut-être déjà utilisé. Essayez :

flask --app mon_app run --port 5001

Q: Quelles extensions VSCode installer pour ce cours ?

R: VSCode (voir Tutoriel HTML pour l'installation) est très léger par défaut : ce sont les extensions qui vous rendent la vie plus facile. Nous vous recommandons :

  • Python (Microsoft) : coloration syntaxique, autocomplétion et intégration du débogueur Python (voir la question sur le débogage ci-dessous).

  • SQLite Viewer : permet d'ouvrir et parcourir un fichier .db/.sqlite directement dans VSCode (voir la section Bases de données ci-dessous).

  • GitLens : enrichit l'intégration Git de VSCode (historique par ligne, comparaison de branches, ...), utile pour comprendre qui a écrit quoi dans le code d'un·e collègue avant une review.

  • autoDocstring : génère automatiquement un squelette de docstring pour vos fonctions Python (voir Documenter son code avec des docstrings).

Avertissement

N'installez pas et surtout n'activez pas GitHub Copilot ou toute autre extension d'IA générative : leur utilisation est interdite dans ce cours (voir Chapitre 8 : Phase 1 du projet).

Flask et développement web

Q: Quelle est la différence entre une page statique et une page dynamique ?

R: Une page statique est toujours la même pour tous les utilisateurs (fichiers HTML/CSS/JS purs). Une page dynamique est générée côté serveur et peut varier selon l'utilisateur, l'heure, les données en base, etc.

Q: À quoi servent les décorateurs Flask comme ``@app.route()`` ?

R: Les décorateurs permettent d'associer une URL (route) à une fonction Python. Quand un utilisateur accède à cette URL, Flask exécute la fonction correspondante.

Q: Pourquoi mes modifications ne s'affichent pas dans le navigateur ?

R: Plusieurs raisons possibles :

  1. Le navigateur a mis la page en cache : rechargez avec Ctrl+Shift+R (Cmd+Shift+R sur Mac)

  2. Vous devez redémarrer le serveur Flask

  3. Activez le mode debug : flask --app mon_app run --debug

Q: Comment passer des variables à mes templates ?

R: Utilisez la fonction render_template() avec des arguments nommés :

from flask import render_template

@app.route('/user/<name>')
def user(name):
    return render_template('user.html', username=name)

Templates et Jinja2

Q: Quelle est la différence entre ``{{ }}`` et ``{% %}`` dans les templates ?

R:

  • {{ variable }} : affiche le contenu d'une variable

  • {% instruction %} : exécute une instruction (boucle, condition, etc.)

Q: Mes fichiers CSS/JS ne se chargent pas

R: Vérifiez que :

  1. Vos fichiers statiques sont dans le dossier static/

  2. Vous utilisez url_for('static', filename='...') pour les référencer

  3. Le chemin du fichier est correct (ex: static/css/style.css)

Q: Comment faire une boucle dans un template ?

R: Utilisez la syntaxe Jinja2 :

{% for item in items %}
    <li>{{ item }}</li>
{% endfor %}

Git et versionnement

Q: J'ai fait un commit par erreur, comment l'annuler ?

R: Pour annuler le dernier commit (mais garder les modifications) :

git reset --soft HEAD~1

Pour annuler complètement le dernier commit et les modifications :

git reset --hard HEAD~1

Q: Comment résoudre un conflit Git ?

R:

  1. Ouvrez les fichiers en conflit (marqués avec <<<<<<<, =======, >>>>>>>)

  2. Choisissez quelle version garder ou fusionnez-les manuellement

  3. Supprimez les marqueurs de conflit

  4. git add les fichiers résolus

  5. git commit pour finaliser la fusion

Consultez le Tutoriel Git pour des exercices pratiques et guidés.

Q: Je ne veux pas versionner certains fichiers (comme ``__pycache__`` ou ``venv/``)

R: Créez ou modifiez le fichier .gitignore à la racine de votre projet :

__pycache__/
*.pyc
venv/
instance/
.DS_Store

Mise en ligne

Q: Le pipeline d'intégration continue (CI) échoue, que faire ? R: Consultez d'abord la section dédiée aux pipelines CI dans le Gestion des erreurs de déploiement. Si le problème persiste, annulez le dernier commit et refaites des commits plus petits pour identifier la source du problème :

git reset --soft HEAD~1
# Puis refaites vos modifications en plusieurs petits commits jusqu'à trouver quelle modification a causé l'échec du pipeline.

Q: Le site est déployé mais après une page donnée il ne fonctionne plus / j'ai une erreur 500, que faire ? R: Consultez les logs (voir Gestion des erreurs de crash du site)

Bases de données

Q: SQLite vs PostgreSQL vs MySQL, lequel choisir ?

R: Pour ce cours et le développement local, SQLite est parfait (pas de serveur à installer). Pour la production, PostgreSQL ou MySQL sont recommandés.

Q: Où est stockée ma base de données SQLite ?

R: Par défaut dans le dossier instance/ de votre application Flask. Le fichier a généralement l'extension .db ou .sqlite.

Q: Comment visualiser le contenu de ma base SQLite ?

R: Plusieurs options :

  1. En ligne de commande : sqlite3 instance/database.db

  2. DB Browser for SQLite (interface graphique gratuite)

  3. Extension VS Code : "SQLite Viewer"

Q: Mes modifications de la base de données ne persistent pas

R: Vérifiez que vous faites bien un commit() après vos modifications :

db.commit()

Débogage

Q: J'ai une erreur 404 (Not Found)

R:

  1. Vérifiez que la route existe dans votre code Flask

  2. Vérifiez l'URL dans la barre d'adresse

  3. Vérifiez que le serveur Flask est bien lancé

Q: J'ai une erreur 500 (Internal Server Error)

R: C'est une erreur dans votre code Python. Vérifiez :

  1. Les logs du serveur Flask dans le terminal

  2. Activez le mode debug : flask --app mon_app run --debug et regardez si un message d'appareur apparaît au moment où vous accédez à la page

  3. Vérifiez la syntaxe de votre code

Q: Comment déboguer mon application Flask ?

R: Plusieurs techniques, de la plus simple à la plus puissante :

  1. Utilisez print() pour afficher des valeurs dans le terminal. Simple, mais il faut penser à les retirer ensuite.

  2. Activez le mode debug Flask (flask --app mon_app run --debug) : en cas d'erreur 500, une page interactive s'affiche dans le navigateur avec la trace complète de l'erreur, et vous pouvez même exécuter du code Python directement dans le navigateur à l'endroit du plantage.

  3. Utilisez le module pdb, le débogueur intégré à Python. Ajoutez la ligne breakpoint() à l'endroit du code que vous voulez inspecter : l'exécution s'arrête à cet endroit et vous obtenez un terminal interactif où vous pouvez taper le nom de vos variables pour voir leur valeur, n pour passer à la ligne suivante, c pour continuer l'exécution, ou q pour quitter.

  4. Utilisez le débogueur graphique de VS Code : posez un point d'arrêt en cliquant à gauche du numéro de ligne (un point rouge apparaît), puis lancez votre application via le menu Run and Debug (icône avec un triangle et un insecte dans la barre latérale). L'exécution s'arrêtera sur votre point d'arrêt et vous pourrez inspecter toutes les variables dans un panneau dédié, sans devoir taper de commandes.

  5. Pour des problèmes côté navigateur (JavaScript, Chart.js, requêtes qui échouent), utilisez les outils de développement du navigateur (Ctrl+Shift+I / Cmd+Option+I), en particulier l'onglet Console pour les erreurs JavaScript et l'onglet Network pour voir le détail des requêtes HTTP envoyées par le navigateur (méthode, code de statut, contenu de la réponse). Voir aussi la section sur le débogage JavaScript dans La visualisation de données avec chart.js.

  6. Consultez les logs dans le terminal où tourne Flask, ou ceux de votre serveur en ligne (voir Gestion des erreurs de crash du site).

Q: ``NameError: name 'X' is not defined``

R: Vous avez oublié d'importer un module ou de définir une variable. Vérifiez vos imports en haut du fichier.

Projet et rendu

Q: Quel format de rendu est attendu ?

R: Suivez les instructions spécifiques de chaque projet dans les chapitres correspondants.

Q: J'ai pris du retard, que faire ?

R:

  1. Contactez votre assistant ou tuteur au plus vite

  2. Rattrapez votre retard, refaite la phase 0 si vous ne maitrisez pas l'HTML, et le tuto Flask Chapitre 7 : Travaux Pratiques #3 : Un site Flask sans base de données.

  3. Demandez de l'aide pendant les séances de TP

  4. Consultez les ressources du cours et cette FAQ

Q: Où puis-je trouver de l'aide supplémentaire ?

R:

  1. Les séances de TP avec les assistants

  2. Le forum du cours sur Moodle

  3. La documentation officielle de Flask : https://flask.palletsprojects.com/

  4. La documentation HTML : https://www.w3schools.com/html/

  5. La documentation CSS : https://www.w3schools.com/css/

  6. La documentation JavaScript : https://www.w3schools.com/js/

  7. Cette FAQ

  8. Vos camarades de classe

Bonnes pratiques

Q: Comment organiser mon code Flask ?

R: Suivez l'architecture MVC (Modèle-Vue-Contrôleur) :

  • Modèles : définitions des données (classes Python, schémas de base)

  • Vues : templates HTML dans le dossier templates/

  • Contrôleurs : fonctions Flask avec les routes (logique métier)

Q: Dois-je commiter souvent sur Git ?

R: Oui ! Faites des commits :

  • Régulièrement (plusieurs fois par session de travail)

  • Avec des messages clairs et descriptifs

  • Pour chaque fonctionnalité complète ou correction de bug

  • Avant de faire des modifications importantes

Q: Comment écrire de bons messages de commit ?

R: Un bon message de commit :

  • Est écrit à l'impératif ("Ajoute", "Corrige", pas "Ajouté" ou "Ajout de")

  • Est concis mais descriptif

  • Commence par une majuscule

  • Exemples : "Ajoute la page de connexion", "Corrige le bug de l'affichage des dates"

Q: Faut-il commenter mon code ?

R: Oui, mais intelligemment :

  • Commentez le "pourquoi", pas le "quoi" (le code montre ce qu'il fait)

  • Documentez les fonctions complexes

  • Expliquez les choix techniques non évidents

  • Utilisez des noms de variables et fonctions explicites

Syllabus

Q: J'ai trouvé une erreur dans le Syllabus, que faire ?

R: Signalez-la à votre assistant ou tuteur. Ils pourront la transmettre au responsable du cours pour correction. Merci de votre aide !

Problèmes spécifiques à Windows

Cette section est gardée pour référence, car vous ne pouvez pas utilisez Windows directement dans ce cours. Vous devez utiliser WSL, comme discuté au précédent TP. Nous gardons cette F.A.Q. comme référence pour des étudiants qui voudraient essayer en dehors du cours, et pour décourager les étudiants d'essayer de faire ce cours dans Windows directement.

Q: 'python' n'est pas reconnu en tant que commande interne

R: Si vous n'avez pas coché "Add Python 3.* to PATH" lors de l'installation, alors vous ne pourrez pas taper "python" dans votre ligne de commande, car le système ne saura pas où trouver python. D'abord, remarquez qu'il est utile de lire les consignes correctement, puisque c'est indiqué visuellement dans le tutorial d'installation python qui vous est proposé.

Pour confirmer le problème, essayez de lancer directement python.exe en trouvant le chemin complet. Il est en général installé dans %LOCALAPPDATA%\Programs\Python\. Naviguez vers ce dossier en le tapant dans la barre d'adresse de l'explorateur Windows, puis trouvez le nom du dossier qui dépend de la version de Python, par exemple Python311. Le chemin complet dans ce cas sera %LOCALAPPDATA%\Programs\Python\Python311\python.exe.

Essayez de lancer python en ligne de commande en utilisant ce chemin complet:

$ %LOCALAPPDATA%\Programs\Python\Python311\python.exe --version

Si cela fonctionne, le problème est bien la variable d'environnement et continuez. Sinon demandez de l'aide à votre assistant.

Pour ajouter la variable d'environnement:

  1. Appuyer sur la touche Windows + R

  2. Taper "sysdm.cpl" et cliquer sur OK

  3. Aller dans "Paramètres système avancés"

  4. Cliquer sur "Variables d'environnement"

  5. Trouver "Path" ou "PATH" dans la liste des variables utilisateur et sélectionner la ligne

  6. Faites "nouveau" et ajoutez le chemin trouvé ci-dessus sans la partie "python.exe", c'est-à-dire seulement le chemin vers le dossier qui le contient

Une version visuelle (en anglais) de ce processus est disponible ici : https://www.geeksforgeeks.org/python/how-to-add-python-to-windows-path/

Q: Flask est introuvable

R: Il est possible que sur Windows la commande "flask" soit introuvable. Dans ce cas, utilisez python -m flask à la place. Il arrive également qu'une version embarquée de python, par exemple avec Inkscape crée des conflits. Dans ce cas, utilisez le chemin complet vers python, quelque chose comme C:\Users\tom\AppData\Local\Programs\Python\Python311\python.exe -m flask --version, ou changez l'ordre des variables d'environnement comme indiqué ci-dessus.

Ressources supplémentaires

Note

Cette FAQ est régulièrement mise à jour. Si votre question n'y figure pas, n'hésitez pas à la poser à votre assistant ou tuteur !