Bagaimana anda dimaksudkan untuk debug kesalahan dalam Labu? Mencetak ke console? Pesan kilat ke halaman? Atau ada pilihan yang lebih kuat yang tersedia untuk mencari tahu apa yang's terjadi ketika sesuatu berjalan salah?
Menjalankan aplikasi dalam mode pengembangan akan menunjukkan interaktif traceback dan console di browser ketika ada kesalahan. Untuk menjalankan dalam mode pengembangan, mengatur FLASK_ENV=pengembangan
variabel lingkungan maka gunakan flask menjalankan perintah
(ingat untuk point FLASK_APP
untuk aplikasi anda juga).
Untuk Linux, Mac, Linux Subsistem untuk Windows, Git Bash pada Windows, dll.:
export FLASK_APP=myapp
export FLASK_ENV=development
flask run
Untuk Windows CMD, gunakan set
, bukan ekspor:
set FLASK_ENV=development
Untuk PowerShell, gunakan $env
:
$env:FLASK_ENV = "development"
Sebelum Labu 1.0, ini adalah dikendalikan oleh FLASK_DEBUG=1
variabel lingkungan sebagai gantinya.
Jika anda're menggunakan app.run()
metode bukan flask menjalankan perintah
, lulus debug=True
untuk mengaktifkan mode debug.
Tracebacks juga dicetak ke terminal yang menjalankan server, terlepas dari perkembangan mode.
Jika anda're menggunakan PyCharm, DIBANDINGKAN dengan Kode, dll., anda dapat mengambil keuntungan dari debugger untuk langkah melalui kode dengan breakpoints. Jalankan konfigurasi dapat menunjukkan naskah memanggil app.menjalankan(debug=True, use_reloader=False)
, atau menunjuk pada venv/bin/flask
script dan menggunakannya seperti yang anda lakukan dari command line. Anda dapat meninggalkan reloader tamu dengan kebutuhan khusus, tetapi reload akan membunuh debugging konteks dan anda akan memiliki untuk menangkap breakpoint lagi.
Anda juga dapat menggunakan pdb, pudb, atau terminal lain debugger dengan memanggil set_trace
dalam melihat di mana anda ingin untuk memulai debug.
Pastikan untuk tidak menggunakan terlalu luas kecuali blok. Sekitarnya semua kode anda dengan menangkap-semua mencoba... kecuali...
akan diam kesalahan anda ingin men-debug. It's yang tidak perlu pada umumnya, karena Flask sudah akan menangani pengecualian dengan menunjukkan debugger atau error 500 dan mencetak traceback untuk konsol.
Anda dapat menggunakan aplikasi.menjalankan(debug=True)
untuk Werkzeug Debugger edit seperti yang disebutkan di bawah ini, dan aku seharusnya tahu.
Dari 0.11
dokumentasi, anda dapat mengaktifkan mode debug dengan mengekspor variabel lingkungan:
export FLASK_APP=/daemon/api/views.py # path to app
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Satu juga dapat menggunakan Flask Debug Toolbar ekstensi untuk mendapatkan informasi lebih rinci tertanam di halaman diberikan.
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>"
Memulai aplikasi sebagai berikut:
FLASK_APP=main.py FLASK_DEBUG=1 flask run
Jika anda ingin men-debug anda flak aplikasi hanya pergi ke folder di mana labu aplikasi ini, don't lupa untuk mengaktifkan lingkungan virtual anda dan paste baris di konsol perubahan, "mainfilename" termos file utama.
export FLASK_APP="mainfilename.py"
export FLASK_DEBUG=1
python -m flask run --host=0.0.0.0
Setelah anda mengaktifkan debugger untuk flask aplikasi hampir setiap kesalahan akan dicetak pada konsol atau di jendela browser. Jika anda ingin mencari tahu apa yang's happing anda dapat menggunakan sederhana cetak laporan, atau anda juga dapat menggunakan konsol.log() untuk kode javascript.
Install python-dotenv
di lingkungan virtual anda.
Membuat .flaskenv dalam proyek anda root. Oleh root proyek, maksudku folder yang telah anda app.py file
Di dalam file ini menulis sebagai berikut:
FLASK_APP=myapp
FLASK_ENV=development
Sekarang mengeluarkan perintah berikut:
flask run
Untuk mengaktifkan mode debug di labu anda cukup ketik set FLASK_DEBUG=1
pada CMD
untuk windows dan ekspor FLASK_DEBUG=1
pada Linux termial kemudian restart aplikasi anda dan anda baik untuk pergi!!