这是我的Flask设置:
main.py
from flask import Flask
from app.views import main_bp
app = Flask(__name__)
app.register_blueprint(main_bp, url_prefix='')
app.config.py
(缩短为" ......"对于此示例)
CONFIG = {
'SITE_NAME': 'Test Site',
'SSL': False,
'DEBUG': True,
'LOGGED_IN': False,
...
}
views.py
from config import CONFIG
@main_bp.route('/')
@main_bp.route('/<page_slug>/')
def fallback(page_slug='home'):
# Check if logged in
if CONFIG['LOGGED_IN']:
return 'Logged In'
else
return 'Logged Out'
现在,如果我在我的某个浏览器中将CONFIG['LOGGED_IN']
更改为True
(让我们说谷歌Chrome浏览器),然后打开另一个浏览器访问该网站(让我们说Firefox ),然后我已经登录了这两个。如果我然后在Firefox中注销并刷新Chrome,我就会注销两者。
当我使用Django时,我从来没有注意到这样的问题......我的全局CONFIG变量在浏览器中持续存在。怪异!
我是否需要将我的CONFIG变成课程?也许只有在运行dev_appserver.py并且在生产中不会发生时才会发生这种情况?我还在学习,所以请你好!谢谢:))
注意:请忽略此示例中明显的安全问题。我向你保证,这不是我打算如何使用这段代码。
答案 0 :(得分:0)
正如大卫所指出的那样,我不应该将每个会话的变量存储为全局变量。在加载相关的会话变量(如UID和会话ID)之后,我将决定这些变量。
感谢。
更新:虽然我觉得有趣的是Flask文档会提倡通过g
设置全局变量(参见:http://flask.pocoo.org/docs/0.11/api/)