Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Pandangan Flask Saya Mengembalikan `TypeError: objek 'bool' tidak boleh dipanggil`?

Mengapa Pandangan Flask Saya Mengembalikan `TypeError: objek 'bool' tidak boleh dipanggil`?

Linda Hamilton
Linda Hamiltonasal
2024-12-10 06:02:10934semak imbas

Why Does My Flask View Return a `TypeError: 'bool' object is not callable`?

Flask View TypeError: 'bool' Object Not Callable

Dalam Flask, paparan dijangka akan mengembalikan jenis data tertentu, iaitu: rentetan, Objek respons, tuple rentetan dan kod status, atau aplikasi WSGI yang sah. Walau bagaimanapun, mengembalikan nilai boolean boleh membawa kepada ralat: TypeError: objek 'bool' tidak boleh dipanggil.

Ini berlaku apabila fungsi pandangan, bukannya mengembalikan salah satu jenis data yang disebutkan di atas, mengembalikan boolean (True atau Palsu). Flask mentafsir boolean ini sebagai aplikasi WSGI dan cuba memanggilnya, mengakibatkan ralat.

Untuk menyelesaikan isu ini, pastikan fungsi paparan mengembalikan salah satu jenis data yang disokong. Dalam sampel kod yang diberikan, paparan mengembalikan True selepas berjaya melog masuk pengguna:

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    user = User.query.filter_by(username=username).first()

    if user:
        login_user(user)
        return True

    return False

Untuk membetulkannya, ia harus mengembalikan rentetan, objek Respons atau tuple dan bukannya boolean:

@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    user = User.query.filter_by(username=username).first()

    if user:
        login_user(user)
        return redirect(url_for('home'))  # Return a string or redirect

    return Response("Login failed", status=401)  # Return a Response object

Atas ialah kandungan terperinci Mengapa Pandangan Flask Saya Mengembalikan `TypeError: objek 'bool' tidak boleh dipanggil`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn