當我們在編寫Flask項目的時候,一般來說,如果遇到這個錯誤時:
錯誤:RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
網上基本上都是說,在Flask對象app下面設置SECRET_KEY:
app = Flask() app.secret_key = 'xxxxxxx'
這確實是一種解決方法,可是我的問題來了,我將app的創建封裝在了工廠函數create_app下了,而且我的config.py配置文件中,也已經設置了SECRET_KEY,但是當我將數據保存在session中,總是會報錯,說我沒有設置SECRET_KEY這個參數:
配置完成后,然后啟動項目初始化,也都加載成功了,但是一到保存數據在session中時,就會報錯,找不到SECRET_KEY,找了好幾個小時的解決方法,最后發現了這個方法:
這是Flask的SESSION_TYPE的session存儲格式,一共有這五種:
我最后在配置文件中添加的存儲類型是:filesystem類型
添加這個類型還會報一個錯:
ModuleNotFoundError: No module named 'werkzeug.contrib'
這個github上說的是:werkzeug高了,我之前用的是1.0.1,上面說降到0.16.0版本,然后我降了版本,確實能夠正常訪問了。
應該還可以設置其他類型的session存儲類型,下次可以試試。