Javascript 存储在会话中,从 python/flask 中的会话中获取

艾萨克华莱士

我正在使用 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 : '例程'

osint_alex

你得到一个关键错误,因为当你写

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章