I am trying to debug a view in my Flask app that is return a 500 status with the error TypeError: 'bool' object is not callable in the traceback. The view calls login_user from Flask-Login then returns True to indicate that the login was successful.
I have debugged until app_iter = app(environ, start_response) and the app is now a boolean with the value True rather than the Flask app object.
Traceback (most recent call last):
File "D:Python27libsite-packagesflaskapp.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "D:Python27libsite-packagesflaskapp.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "D:Python27libsite-packagesflaskapp.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "D:Python27libsite-packagesflaskapp.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "D:Python27libsite-packagesflaskapp.py", line 1478, in full_dispatch_request
response = self.make_response(rv)
File "D:Python27libsite-packagesflaskapp.py", line 1577, in make_response
rv = self.response_class.force_type(rv, request.environ)
File "D:Python27libsite-packageswerkzeugwrappers.py", line 824, in force_type
response = BaseResponse(*_run_wsgi_app(response, environ))
File "D:Python27libsite-packageswerkzeugwrappers.py", line 57, in _run_wsgi_app
return _run_wsgi_app(*args)
File "D:Python27libsite-packageswerkzeugtest.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
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
In Flask, a view must return one of the following:
- a string
- a
Responseobject (or subclass) - a tuple of
(string, status, headers)or(string, status) - a valid WSGI application
Flask tests for the first 3 options, and if they don’t fit, assumes it is the fourth. You returned True somewhere, and it is being treated as a WSGI application instead.
See About Responses in the documentation.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0