我正在使用 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)
错误日志:
回溯(最近一次调用):文件“C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py”,第 2088 行,调用中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) 文件“C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py”,第 2070 行,在 wsgi_app response = self.full_dispatch_request() 文件“C:\Users \user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\app.py”,第 1515 行,在 full_dispatch_request rv = self.handle_user_exception(e) 文件“C:\Users\user\Desktop\Springboard\ trainingApp\venv\Lib\site-packages\flask\app.py”,第 1513 行,在 full_dispatch_request rv = self.dispatch_request() 文件“C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site- package\flask\app.py”,第 1499 行,在 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:文件“C:\Users\user\Desktop\Springboard\workoutApp\venv\Lib\site-packages\flask\sessions.py”,第 79 行,在getitem返回 super()。getitem (key) KeyError : '例程'
你得到一个关键错误,因为当你写
session['routine']
您的代码正在尝试访问会话对象中的关键“例程”,但它不存在,因此引发了关键错误。
您可以将其修改为:
if 'routine' in session:
obj = json.loads(session['routine'])
print(obj)
else:
print('your error message')
在烧瓶中,您还可以通过执行以下操作来查看会话对象中的键:
app.logger.info('Session keys: {}'.format(session.keys()))
我认为默认情况下烧瓶不会在信息级别记录内容,因此要使其正常工作,您需要在启动应用程序时将日志记录设置为信息级别。如果这太繁琐,只需将'app.logger.info' 替换为print。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句