Django Session在开发服务器中的生命周期

时间:2012-06-20 03:42:29

标签: python django web-applications

我现在正在使用我的webapp中的Session,我注意到每当我重新启动开发服务器(Django附带的内置服务器)时,会话都不会重置。虽然我一遍又一遍地重新启动服务器,但它仍然存在。

我在哪里可以设置它,以便每当我重置/重启开发服务器时,都会刷新/清除会话?

2 个答案:

答案 0 :(得分:2)

更改运行服务器文件

DJANGO_SETTINGS_MODULE="myproj.settings" \
  python -c 'from django.contrib.sessions.models import Session; \
    Session.objects.all().delete()' 
python manage.py runserver

请参阅此处Django片段:清除会话表 - > http://djangosnippets.org/snippets/48/

答案 1 :(得分:2)

另一种解决方案是使用非持久会话后端。例如,

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

假设:Django 1.0-1.5,使用默认缓存后端(LocMem)

使用signed_cookies后端并清除浏览器的Cookie 也可以工作,但我还没有尝试过。

为什么?

Django默认使用数据库作为会话后端

  

SESSION_ENGINE

     

默认值:django.contrib.sessions.backends.db

因此,重新加载开发服务器时,将从数据库中恢复旧会话。这适用于文件和cached_db后端。