前言
在python django(version:1.11.6) 項目的開發過程中, 登錄模塊中要用到session模塊。
理論上默認就可以使用session功能,就像操作字典一樣,但是出現問題。
使用方法
將Session存儲在數據庫中,要將 ‘django.contrib.sessions’加入到INSTALLED_APPS 變量中;在MIDDLEWARE_CLASSES變量中加入‘django.contrib.sessions.middleware.SessionMiddleware’; 然後在DATABASE變量中配置engine和name 。
問題產生
運行登錄模塊127.0.0.1:8000/login.html/ 出現如下錯誤“no such table: django_session”。已經說得很清楚了,沒有自動生成這個表。
查看trace log:
嘗試解決
問題的關鍵是為什麼沒有自動生成這個表呢?首相想到的是項目配置不對,需要檢查(經過檢查配置正確)。再想到的是數據庫需要特殊方式來生成這些表。網上的朋友們所的方式有運行“python manage.py syncdb”,報錯說找不到syncdb命令。 說明這個版本的django還沒有集成此命令。其他方式也試過,均還是有問題。還是老實看源碼,發現1.11.6版本的django中有migrations模塊。
於是運行命令“python manage.py makemigrations” , 然後再運行“python manage.py migrate”即可把數據完整的遷移過去。
運行成功後:
後記
出現此問題的時候,原因可能是多方面的, 解決方法跟django的版本有關係。關鍵是找到自己版本的解決方法, 源碼中有解釋。
部署的時候第一次也要手動敲一下這兩個命令,或者用腳本去控制部署時運行這兩條命令。
閱讀更多 卜溪大人 的文章