.. _ref-faq: === 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. .. tip:: 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 : .. code-block:: console 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 : .. code-block:: console flask --app mon_app run --port 5001 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 : .. code-block:: python from flask import render_template @app.route('/user/') 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 : .. code-block:: html {% for item in items %}
  • {{ item }}
  • {% 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) : .. code-block:: console git reset --soft HEAD~1 Pour annuler complètement le dernier commit et les modifications : .. code-block:: console 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 :ref:`ref-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 : .. code-block:: text __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 :ref:`ref-err-ci`. Si le problème persiste, annulez le dernier commit et refaites des commits plus petits pour identifier la source du problème : .. code-block:: console 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 :ref:`ref-logs`) 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 : .. code-block:: python 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 : 1. Utilisez ``print()`` pour afficher des valeurs dans le terminal 2. Activez le mode debug Flask 3. Utilisez le débogueur Python de VS Code 4. Consultez les logs dans le terminal où tourne Flask **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 :ref:`ref-tp-flask-static`. 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: .. code-block:: bat $ %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 --------------------------- - 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/ .. 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 !