【问题标题】:Django Session's Lifetime in Development ServerDjango Session 在开发服务器中的生命周期
【发布时间】:2012-06-22 04:10:34
【问题描述】:

我现在在我的 web 应用程序中处理 Session,我注意到每当我重新启动开发服务器(Django 附带的内置服务器)时,会话不会自行重置。即使我一遍又一遍地重新启动服务器,它仍然存在。

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

【问题讨论】:

  • 我不确定为什么这是理想的行为。您是否期望在生产中也一样?例如,您当然不希望因为您退回服务器而清空所有客户的购物车。
  • 我只是想尝试一些东西。

标签: python django web-applications


【解决方案1】:

更改运行服务器文件

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

看这里 Django sn-ps: clear session table -> http://djangosnippets.org/snippets/48/

【讨论】:

    【解决方案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 后端。

    【讨论】:

      猜你喜欢
      • 2011-11-28
      • 1970-01-01
      • 2013-02-05
      • 2020-11-12
      • 1970-01-01
      • 2016-09-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多