解决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的版本有关系。关键是找到自己版本的解决方法, 源码中有解释。

部署的时候第一次也要手动敲一下这两个命令,或者用脚本去控制部署时运行这两条命令。


分享到:


相關文章: