Javascript 存储在会话中,从会话中获取 python/flask
Javascript store in session, get from session in python/flask
我正在使用一个烧瓶应用程序,我正在尝试使用 javascript 存储一个 Json 对象,并在 python 中检索它,因为我想存储一种用户正在生成的“购物清单”信息进入我的数据库。该对象出现在我的浏览器会话存储中
但似乎我的语法不正确,因为我收到“KeyError:'routine'”
@app.route("/workoutroutines", methods=["GET", "POST"])
def showWorkoutRoutines():
"""Show all workout routines, allow user to create new routine"""
if session['routine'] is not None: // <---error here
try:
obj = json.loads(session['routine'])
print(obj.name)
except:
print("something went wrong")
all_routines = WorkoutRoutines.query.all()
createRoutineButton = url_for("createARoutine")
return render_template("allRoutines.html", all_routines=all_routines, createRoutineButton=createRoutineButton)
错误日志:
Traceback (most recent call last):
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 2088, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 2073, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 2070, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 1515, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 1513, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 1499, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "C:\Users\user\Desktop\Springboard\workoutApp\app.py", line 171, in showWorkoutRoutines
if session['routine'] is not None:
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\sessions.py", line 79, in __getitem__
return super().__getitem__(key)
KeyError: 'routine'
你遇到一个关键错误,因为当你写
session['routine']
您的代码正在尝试访问会话对象中的键 'routine',但它不存在,因此会引发键错误。
您可以修改为:
if 'routine' in session:
obj = json.loads(session['routine'])
print(obj)
else:
print('your error message')
在 flask 中,您还可以通过以下操作查看会话对象中的键:
app.logger.info('Session keys: {}'.format(session.keys()))
我认为默认情况下 Flask 不会在信息级别记录内容,因此要使其正常工作,您需要在启动应用程序时将日志记录设置为信息级别。如果这太麻烦,只需将 'app.logger.info' 替换为 print.
我正在使用一个烧瓶应用程序,我正在尝试使用 javascript 存储一个 Json 对象,并在 python 中检索它,因为我想存储一种用户正在生成的“购物清单”信息进入我的数据库。该对象出现在我的浏览器会话存储中
但似乎我的语法不正确,因为我收到“KeyError:'routine'”
@app.route("/workoutroutines", methods=["GET", "POST"])
def showWorkoutRoutines():
"""Show all workout routines, allow user to create new routine"""
if session['routine'] is not None: // <---error here
try:
obj = json.loads(session['routine'])
print(obj.name)
except:
print("something went wrong")
all_routines = WorkoutRoutines.query.all()
createRoutineButton = url_for("createARoutine")
return render_template("allRoutines.html", all_routines=all_routines, createRoutineButton=createRoutineButton)
错误日志:
Traceback (most recent call last):
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 2088, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 2073, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 2070, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 1515, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 1513, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py", line 1499, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "C:\Users\user\Desktop\Springboard\workoutApp\app.py", line 171, in showWorkoutRoutines
if session['routine'] is not None:
File "C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\sessions.py", line 79, in __getitem__
return super().__getitem__(key)
KeyError: 'routine'
你遇到一个关键错误,因为当你写
session['routine']
您的代码正在尝试访问会话对象中的键 'routine',但它不存在,因此会引发键错误。
您可以修改为:
if 'routine' in session:
obj = json.loads(session['routine'])
print(obj)
else:
print('your error message')
在 flask 中,您还可以通过以下操作查看会话对象中的键:
app.logger.info('Session keys: {}'.format(session.keys()))
我认为默认情况下 Flask 不会在信息级别记录内容,因此要使其正常工作,您需要在启动应用程序时将日志记录设置为信息级别。如果这太麻烦,只需将 'app.logger.info' 替换为 print.