Maison >développement back-end >Tutoriel Python >Pourquoi ma vue Flask renvoie-t-elle une « TypeError : l'objet 'bool' n'est pas appelable » ?

Pourquoi ma vue Flask renvoie-t-elle une « TypeError : l'objet 'bool' n'est pas appelable » ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-10 06:02:10931parcourir

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

Flask View TypeError : 'bool' Object Not Callable

Dans Flask, les vues sont censées renvoyer des types de données spécifiques, à savoir : des chaînes, Objets de réponse, tuples de chaînes et codes d'état, ou applications WSGI valides. Cependant, renvoyer une valeur booléenne peut conduire à l'erreur : TypeError : l'objet 'bool' n'est pas appelable.

Cela se produit lorsque la fonction d'affichage, au lieu de renvoyer l'un des types de données susmentionnés, renvoie un booléen (True ou Faux). Flask interprète ce booléen comme une application WSGI et tente de l'appeler, ce qui entraîne l'erreur.

Pour résoudre ce problème, assurez-vous que la fonction d'affichage renvoie l'un des types de données pris en charge. Dans l'exemple de code donné, la vue renvoie True après avoir connecté avec succès un utilisateur :

@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

Pour remédier à cela, elle doit renvoyer une chaîne, un objet Response ou un tuple au lieu du booléen :

@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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn