django 的session需要使用数据库。以前只用过mysql去存储session。但是现在,我可不想为了用session,而去费力的装个mysql。后来看了看django step by step,才知道:“在Python2.6中内置了sqlite3数据库,可以直接的使用sqlite3。sqlite3可以直接使用本地文件存储数据库,因此不存在服务器、端口、用户名、密码、权限的配置问题,马上就可以使用。”
如何设置使用其实在settings.py原始配置里都写好告诉我们了,如何使用sqlite3作为session数据库:
所以,按下边的配置的提示更改稍微更改一下:
DATABASES = {
'default': {
'ENGINE': 'sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': './session.db', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
注意,还需要在settings.py里面的MIDDLEWARE_CLASSES中加入'django.middleware.csrf.CsrfResponseMiddleware'。否则会报CSRF verification failed.错误的。
然后运行命令,建立sqlite3的数据库:
python manage.py syncdb
之后按提示输入用户名、Email和密码。
再次启动django,就可以使用基于sqlite3的session了!真是很简单,很方便啊!
#######################华丽的分隔线##############################
附注:
解决无法在python里导入sqlite3的问题
今天用运营商那边的服务器,centos 5.5,装了python2.6.5之后,无法import sqlite3。
原因是运营商那边的机器,没有安装sqlite-devel所致。
在网上查了一下,解决办法是,先装sqlite-devel:
yum install sqlite-devel -y
之后,重新编译安装python,问题解决。