解決django項目session出現錯誤'no such table django

前言

在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”。已經說得很清楚了,沒有自動生成這個表。

解決django項目session出現錯誤'no such table django_session'

查看trace log:

解決django項目session出現錯誤'no such table django_session'

嘗試解決

問題的關鍵是為什麼沒有自動生成這個表呢?首相想到的是項目配置不對,需要檢查(經過檢查配置正確)。再想到的是數據庫需要特殊方式來生成這些表。網上的朋友們所的方式有運行“python manage.py syncdb”,報錯說找不到syncdb命令。 說明這個版本的django還沒有集成此命令。其他方式也試過,均還是有問題。還是老實看源碼,發現1.11.6版本的django中有migrations模塊。

解決django項目session出現錯誤'no such table django_session'

於是運行命令“python manage.py makemigrations” , 然後再運行“python manage.py migrate”即可把數據完整的遷移過去。

解決django項目session出現錯誤'no such table django_session'

解決django項目session出現錯誤'no such table django_session'

運行成功後:

解決django項目session出現錯誤'no such table django_session'

解決django項目session出現錯誤'no such table django_session'

後記

出現此問題的時候,原因可能是多方面的, 解決方法跟django的版本有關係。關鍵是找到自己版本的解決方法, 源碼中有解釋。

部署的時候第一次也要手動敲一下這兩個命令,或者用腳本去控制部署時運行這兩條命令。


分享到:


相關文章: