Я использую python / flask для создания простой страницы входа в систему для своего веб-сайта, и у меня возникают проблемы с проверкой хэша, извлеченного из моей БД.Когда я отправляю форму, я получаю внутреннюю ошибку сервера.В журналах apache показано, что «объект типа« TypeError »не поддерживает сериализацию в формате JSON.« Я создал несколько пользователей, поэтому он не связан ни с одним хешем. Любая помощь приветствуется
app.route("/login/",methods=['GET','POST'])
def loginpage():
error=''
try:
c,conn= connectorConnection()
if request.method == 'POST':
c.execute("select * from users where username = ('%s')" %
request.form['username'])
data = c.fetchone()
if sha256_crypt.verify(request.form['password'], data):
session['logged_in'] = True
session['username'] = request.form['username']
flash(' you are now logged in')
return redirect(url_for('home'))
else:
error = 'Invalid Credentials'
gc.collect()
return render_template('login.html',error=error)
Stracktrace:
Traceback (most recent call last):
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 1816, in full_dispatch_request
return self.finalize_request(rv)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 1833, in finalize_request
response = self.process_response(response)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\app.py", line 2114, in process_response
self.session_interface.save_session(self, ctx.session, response)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\sessions.py", line 375, in save_session
val = self.get_signing_serializer(app).dumps(dict(session))
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\itsdangerous\serializer.py", line 166, in dumps
payload = want_bytes(self.dump_payload(obj))
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\itsdangerous\url_safe.py", line 42, in dump_payload
json = super(URLSafeSerializerMixin, self).dump_payload(obj)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\itsdangerous\serializer.py", line 133, in dump_payload
return want_bytes(self.serializer.dumps(obj, **self.serializer_kwargs))
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\json\tag.py", line 296, in dumps
return dumps(self.tag(value), separators=(',', ':'))
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\json\__init__.py", line 179, in dumps
rv = _json.dumps(obj, **kwargs)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\json\__init__.py", line 238, in dumps
**kw).encode(obj)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\site-packages\flask\json\__init__.py", line 81, in default
return _json.JSONEncoder.default(self, o)
File "C:\Users\Tank\AppData\Local\Programs\Python\Python36\lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'TypeError' is not JSON serializable
127.0.0.1 - - [18/Feb/2019 20:23:40] "[1m[35mPOST /login/ HTTP/1.1[0m" 500 -