Я сделал регистр маршрута и функции, которые будут добавлять новых пользователей в базу данных. Код работает нормально, сообщения мигают в соответствии с условием, но единственная проблема заключается в том, что когда я пытаюсь зарегистрировать нового пользователя, он говорит;
Traceback (most recent call last):
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 2463, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 2449, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 1866, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 2446, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 1952, in full_dispatch_request
return self.finalize_request(rv)
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 1969, in finalize_request
response = self.process_response(response)
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask\app.py", line 2268, in process_response
self.session_interface.save_session(self, ctx.session, response)
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\flask_session\sessions.py", line 354, in save_session
self.cache.set(self.key_prefix + session.sid, data,
File "C:\Users\Habiba\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\werkzeug\contrib\cache.py", line 839, in set
pickle.dump(value, f, pickle.HIGHEST_PROTOCOL)
TypeError: cannot pickle '_thread._local' objectI am trying to run following code
Мой код;
@app.route("/register", methods=["GET", "POST"])
def register():
username = request.form.get("username")
email = request.form.get("email")
password = request.form.get("password")
confirm = request.form.get("confirm-password")
data = db.execute("SELECT username, email FROM users WHERE username = :username AND email = :email",
{"username":username,
"email":email} ).fetchone()
if request.method == "POST":
if password != confirm:
flash("Passwords do not match", "danger")
if username == "" or email == "" or password == "" or confirm == "":
flash("Please fill all fields", "danger")
if data != None:
flash("Username or email already exists", "danger")
if data == None and password == confirm:
db.execute("INSERT INTO users (username, email, password) VALUES (:username, :email, :password)",
{"username": username,
"email": email,
"password": password})
db.commit()
session["username"] = username
print(f"{username}")
id = db.execute("SELECT id FROM users WHERE username = :username", {"username":username})
session["id"] = id
#take to books.html and render the list of books
return redirect(url_for('books'))
return redirect(url_for('register'))
return render_template("register.html", register = "register")
Несмотря на то, что я получаю TypeError, все же, когда я проверяю базу данных, я вижу, что новый пользователь вставлен в базу данных.
Заранее спасибо.