La vista de matraz genera TypeError: el objeto 'bool' no es invocable
Estoy intentando depurar una vista en mi aplicación Flask que devuelve un estado 500 con el error TypeError: 'bool' object is not callable
en el rastreo. La vista llama login_user
desde Flask-Login luego regresa True
para indicar que el inicio de sesión fue exitoso.
He depurado hasta app_iter = app(environ, start_response)
y app
ahora es un valor booleano con el valor True
en lugar del objeto de la aplicación Flask.
Traceback (most recent call last):
File "D:\Python27\lib\site-packages\flask\app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "D:\Python27\lib\site-packages\flask\app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "D:\Python27\lib\site-packages\flask\app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "D:\Python27\lib\site-packages\flask\app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "D:\Python27\lib\site-packages\flask\app.py", line 1478, in full_dispatch_request
response = self.make_response(rv)
File "D:\Python27\lib\site-packages\flask\app.py", line 1577, in make_response
rv = self.response_class.force_type(rv, request.environ)
File "D:\Python27\lib\site-packages\werkzeug\wrappers.py", line 824, in force_type
response = BaseResponse(*_run_wsgi_app(response, environ))
File "D:\Python27\lib\site-packages\werkzeug\wrappers.py", line 57, in _run_wsgi_app
return _run_wsgi_app(*args)
File "D:\Python27\lib\site-packages\werkzeug\test.py", line 854, in run_wsgi_app
app_iter = app(environ, start_response)
TypeError: 'bool' object is not callable
@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
Aceptado
En Flask, una vista debe devolver uno de los siguientes:
- una cuerda
- un
Response
objeto (o subclase) - una tupla de
(string, status, headers)
o(string, status)
- una aplicación WSGI válida
Flask prueba las primeras 3 opciones y, si no encajan, asume que es la cuarta. Devolvió True en algún lugar y, en su lugar, se trata como una aplicación WSGI.
Consulte Acerca de las respuestas en la documentación.