Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python flask,使用另一个类将会话保持在作用域中_Python_Class_Session_Flask_Scope - Fatal编程技术网

python flask,使用另一个类将会话保持在作用域中

python flask,使用另一个类将会话保持在作用域中,python,class,session,flask,scope,Python,Class,Session,Flask,Scope,所以我的基本问题是。我有一份烧瓶申请表。在这个应用程序中,我构建了一个使用flask会话的简单登录系统。我想破译我的密码 分为不同的类来帮助区分我的逻辑。但我收到以下错误 Traceback (most recent call last): File "server.py", line 22, in <module> securty = Security() File "/Users/chrisburgin/Development/pigarage/security.

所以我的基本问题是。我有一份烧瓶申请表。在这个应用程序中,我构建了一个使用flask会话的简单登录系统。我想破译我的密码 分为不同的类来帮助区分我的逻辑。但我收到以下错误

Traceback (most recent call last):
  File "server.py", line 22, in <module>
    securty = Security()
  File "/Users/chrisburgin/Development/pigarage/security.py", line 6, in __init__
    print(session.get('logged_in'))
NameError: global name 'session' is not defined
我从我的服务器文件中调用它

securty = Security()
就像夏天一样。我知道“Security”类无法访问会话,因为它不在范围内,但我可以在理解如何提供会话访问方面提供帮助

我做错了什么,请纠正我。谢谢

在我的外部类文件顶部使用from flask导入会话进行编辑

 File "server.py", line 22, in <module>
    securty = Security()
  File "/Users/chrisburgin/Development/pigarage/security.py", line 5, in __init__
    print(session.get('logged_in'))
  File "/Library/Python/2.7/site-packages/werkzeug/local.py", line 338, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/Library/Python/2.7/site-packages/werkzeug/local.py", line 297, in _get_current_object
    return self.__local()
  File "/Library/Python/2.7/site-packages/flask/globals.py", line 20, in _lookup_req_object
    raise RuntimeError('working outside of request context')
RuntimeError: working outside of request context
文件“server.py”,第22行,在
安全
文件“/Users/chrisburgin/Development/pigarage/security.py”,第5行,在__
打印(session.get('logged_in'))
文件“/Library/Python/2.7/site packages/werkzeug/local.py”,第338行,在__
返回getattr(self.\u get\u current\u object(),name)
文件“/Library/Python/2.7/site packages/werkzeug/local.py”,第297行,在“获取当前”对象中
返回self.\uuu local()
文件“/Library/Python/2.7/site packages/flask/globals.py”,第20行,在_lookup_req_对象中
引发运行时错误('在请求上下文之外工作')
运行时错误:在请求上下文之外工作

Flask中的
会话
变量是本地上下文。上下文局部变量是一种特殊类型的全局变量,因为它们只能在特定时间访问

特别是对于
会话
,您只能在应用程序响应请求时使用它。Flask在调用view函数之前设置此变量的值


在堆栈跟踪中,您似乎正在初始化期间创建
Security
类的实例。这个类的构造函数访问
会话
,但此时实际上没有客户机、请求和会话,因此这会给您一个错误。只要不访问构造函数中的会话,就可以创建此类的对象。然后,必须确保仅在视图函数或从视图函数调用的函数中调用
loggedIn
方法,以确保请求上下文存在。

是否在类所在的Python文件中导入了
session
?换句话说,在该文件的顶部是否有来自flask导入会话的
 File "server.py", line 22, in <module>
    securty = Security()
  File "/Users/chrisburgin/Development/pigarage/security.py", line 5, in __init__
    print(session.get('logged_in'))
  File "/Library/Python/2.7/site-packages/werkzeug/local.py", line 338, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/Library/Python/2.7/site-packages/werkzeug/local.py", line 297, in _get_current_object
    return self.__local()
  File "/Library/Python/2.7/site-packages/flask/globals.py", line 20, in _lookup_req_object
    raise RuntimeError('working outside of request context')
RuntimeError: working outside of request context