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 :
Vous avez bien activé votre environnement virtuel
Flask est installé (
pip list | grep -i flask)Vous avez spécifié votre application avec
--app:flask --app mon_app runLe 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/.sqlitedirectement 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 :
Le navigateur a mis la page en cache : rechargez avec Ctrl+Shift+R (Cmd+Shift+R sur Mac)
Vous devez redémarrer le serveur Flask
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 :
Vos fichiers statiques sont dans le dossier
static/Vous utilisez
url_for('static', filename='...')pour les référencerLe 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:
Ouvrez les fichiers en conflit (marqués avec
<<<<<<<,=======,>>>>>>>)Choisissez quelle version garder ou fusionnez-les manuellement
Supprimez les marqueurs de conflit
git addles fichiers résolusgit commitpour 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 :
En ligne de commande :
sqlite3 instance/database.dbDB Browser for SQLite (interface graphique gratuite)
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:
Vérifiez que la route existe dans votre code Flask
Vérifiez l'URL dans la barre d'adresse
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 :
Les logs du serveur Flask dans le terminal
Activez le mode debug :
flask --app mon_app run --debuget regardez si un message d'appareur apparaît au moment où vous accédez à la pageVérifiez la syntaxe de votre code
Q: Comment déboguer mon application Flask ?
R: Plusieurs techniques, de la plus simple à la plus puissante :
Utilisez
print()pour afficher des valeurs dans le terminal. Simple, mais il faut penser à les retirer ensuite.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.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,npour passer à la ligne suivante,cpour continuer l'exécution, ouqpour quitter.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.
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.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:
Contactez votre assistant ou tuteur au plus vite
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.
Demandez de l'aide pendant les séances de TP
Consultez les ressources du cours et cette FAQ
Q: Où puis-je trouver de l'aide supplémentaire ?
R:
Les séances de TP avec les assistants
Le forum du cours sur Moodle
La documentation officielle de Flask : https://flask.palletsprojects.com/
La documentation HTML : https://www.w3schools.com/html/
La documentation CSS : https://www.w3schools.com/css/
La documentation JavaScript : https://www.w3schools.com/js/
Cette FAQ
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:
Appuyer sur la touche Windows + R
Taper "sysdm.cpl" et cliquer sur OK
Aller dans "Paramètres système avancés"
Cliquer sur "Variables d'environnement"
Trouver "Path" ou "PATH" dans la liste des variables utilisateur et sélectionner la ligne
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
Documentation Flask : https://flask.palletsprojects.com/
Documentation Jinja2 : https://jinja.palletsprojects.com/
Git - Guide simple : https://rogerdudler.github.io/git-guide/
W3Schools HTML/CSS : https://www.w3schools.com/
MDN Web Docs : https://developer.mozilla.org/
Documentation SQLite : https://www.sqlite.org/docs.html
Documentation
unittest: https://docs.python.org/3/library/unittest.htmlDocumentation
pdb(débogueur Python) : https://docs.python.org/3/library/pdb.htmlDocumentation Chart.js : https://www.chartjs.org/docs/latest/
PEP 8 - Guide de style Python : https://peps.python.org/pep-0008/
PEP 257 - Conventions de docstrings : https://peps.python.org/pep-0257/
MDN - XSS et sécurité web : https://developer.mozilla.org/fr/docs/Glossary/Cross-site_scripting
MDN - Responsive design : https://developer.mozilla.org/fr/docs/Learn/CSS/CSS_layout/Responsive_Design
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 !