gpt4 book ai didi

python flask,使用另一个类将 session 保持在范围内

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:12 25 4
gpt4 key购买 nike

所以我的基本问题。我有一个 flask 应用程序。在此应用程序内部,我构建了一个使用 Flask session 的简单登录系统。我想破解我的密码分为不同的类以帮助分离我的逻辑。但我收到以下错误。

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

此错误正在使用以下内容接收。

我的外部类

class Security:
def __init__(self):
print('Security Created')
print(session.get('logged_in'))

def loggedIn(self):
if session.get('logged_in') != True:
return False

我从我的服务器文件中调用它

securty = Security()

就像夏天一样。我知道“安全”类无权访问 session ,因为它不在范围内,但我非常需要帮助来理解如何为其提供访问权限。

请指正我做错的任何事情。谢谢!

在我的外部类文件顶部使用 from flask import session 进行编辑

 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

最佳答案

Flask 的session 变量是一个context local。上下文局部变量是一种特殊类型的全局变量,因为它们只能在特定时间访问。

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

在您的堆栈跟踪中,您似乎在初始化期间创建了 Security 类的实例。这个类的构造函数访问了session,但是这个时候真的没有client,没有request,也没有session,所以这就报错了。创建一个这个类的对象是可以的,只要不在构造函数中访问session即可。然后,您必须确保仅在 View 函数或从 View 函数调用的函数内部调用 loggedIn 方法,以确保存在请求上下文。

关于python flask,使用另一个类将 session 保持在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31715006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com