Comment déboguer les erreurs dans Flask ? Imprimer dans la console ? En envoyant des messages flash sur la page ? Ou existe-t-il une option plus puissante pour comprendre ce qui se passe quand quelque chose ne va pas ?
Réponses
Trop de publicités?L'exécution de l'application en mode développement affichera un retour de trace interactif et une console dans le navigateur en cas d'erreur. Pour fonctionner en mode développement, définissez l'option FLASK_ENV=development
puis utilisez la variable d'environnement flask run
(n'oubliez pas de pointer FLASK_APP
à votre application également).
Pour Linux, Mac, Sous-système Linux pour Windows, Git Bash sur Windows, etc :
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Pour le CMD de Windows, utilisez set
au lieu de l'exportation :
set FLASK_ENV=development
Pour PowerShell, utilisez $env
:
$env:FLASK_ENV = "development"
Avant Flask 1.0, ceci était contrôlé par la fonction FLASK_DEBUG=1
à la place.
Si vous utilisez le app.run()
au lieu de la méthode flask run
commande, passe debug=True
pour activer le mode débogage.
Les traces sont également imprimées sur le terminal qui exécute le serveur, quel que soit le mode de développement.
Si vous utilisez PyCharm, VS Code, etc., vous pouvez profiter de son débogueur pour parcourir le code avec des points d'arrêt. La configuration d'exécution peut pointer vers un script qui appelle app.run(debug=True, use_reloader=False)
ou le pointer vers le venv/bin/flask
script et l'utiliser comme vous le feriez à partir de la ligne de commande. Vous pouvez laisser le reloader désactivé, mais un rechargement tuera le contexte de débogage et vous devrez attraper un point d'arrêt à nouveau.
Vous pouvez également utiliser pdb, pudb, ou un autre débogueur de terminal en appelant set_trace
dans la vue où vous voulez commencer le débogage.
Veillez à ne pas utiliser des blocs d'exception trop larges. Entourer tout votre code d'un bloc attrape-tout try... except...
fera taire l'erreur que vous voulez déboguer. Ce n'est pas nécessaire en général, puisque Flask gère déjà les exceptions en affichant le débogueur ou une erreur 500 et en imprimant le retour de trace sur la console.
Vous pouvez utiliser app.run(debug=True)
pour le Outil Débogueur modifier comme mentionné ci-dessous, et j'aurais dû le savoir.
De la 1.1.x
documentation vous pouvez activer le mode débogage en exportant une variable d'environnement à l'invite de votre shell :
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
On peut également utiliser le Barre d'outils de débogage Flask pour obtenir des informations plus détaillées intégrées dans les pages rendues.
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
import logging
app = Flask(__name__)
app.debug = True
app.secret_key = 'development key'
toolbar = DebugToolbarExtension(app)
@app.route('/')
def index():
logging.warning("See this message in Flask Debug Toolbar!")
return "<html><body></body></html>"
Démarrez l'application comme suit :
FLASK_APP=main.py FLASK_DEBUG=1 flask run
- Réponses précédentes
- Plus de réponses