@app.route('/face', methods=['POST']) def index(): g.userInfo = {'username': '11', 'password': '18', 'name': None, 'ID': None, 'picture': None} print(g.userInfo) return jsonify({'status': 'success', 'message': 'hello'}), 200 # 完善个人信息 @app.route('/information', methods=['POST']) def perfectInfo(): # 从前端获取用户名和密码 print(g.userInfo) name = request.form['name'] ID = request.form['ID'] picture = None users_data = UserRead() users = users_data['users'] # 往对应的用户添加信息 for user in users: if user['username'] == g.userInfo['username']: UserJson(g.userInfo['username'], g.userInfo['password'], name, ID, picture, operation='update') # 完善该用户的名字、ID、图片 user['name'] = name user['ID'] = ID user['picture'] = picture # 返回成功信息 return jsonify({'status': 'success', 'message': 'perfect userInfo successfully'}), 200 我在index方法对g.userInfo初始化了,为什么在perfectInfo方法中用不了g.userInfo
时间: 2023-09-13 16:10:51 浏览: 93
C#课件:考勤信息管理系统.ppt
在 Flask 中,g 是一个上下文全局变量,它在每个请求的生命周期内都会被自动创建并赋值。也就是说,g 变量的作用域仅限于当前请求的处理过程中,当请求处理结束后,g 变量的值就会被销毁。
在你的代码中,你在 index 函数中将 g.userInfo 进行了初始化,但是在 perfectInfo 函数中,由于它是另一个请求的处理函数,所以 g.userInfo 的值并没有被保留下来,也就是说,它的值已经被销毁了。因此,在 perfectInfo 函数中访问 g.userInfo 时会出现 '_AppCtxGlobals' object has no attribute 'userInfo' 的错误。
如果你希望在多个请求之间共享数据,可以考虑使用 Flask 的 session 或者将数据存储到数据库中。如果你只是想在一个请求的处理过程中共享数据,可以使用 Flask 的 request 上下文,或者使用全局变量(不过要注意线程安全问题)。
阅读全文