前言
在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的版本有关系。关键是找到自己版本的解决方法, 源码中有解释。
部署的时候第一次也要手动敲一下这两个命令,或者用脚本去控制部署时运行这两条命令。
閱讀更多 卜溪大人 的文章