在我的 Django 项目中,我经常遇到错误:
请求的会话在请求完成之前被删除。例如,用户可能已在并发请求中注销。
这发生在许多视图中,并且由于我网站内的许多不同流程。我注意到这个错误发生在我的本地服务器处理更重的请求时,例如在调用与用户请求的当前页面关联的视图时加载更多图像或从数据库返回更多数据。
在 settings.py 中配置会话引擎时,这个问题确实得到解决:
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
但这会导致用户会话在服务器刷新时被清除,这在开发过程中很痛苦,因此需要另一个选项。
我主要使用 pythons sqlite3 包来执行大多数查询,这可能是导致此错误的一个可能因素。
sqlite3连接设置:
connection = sqlite3.connect(r"C:\Users\logan..\....\db.sqlite3", check_same_thread=False)
settings.py中的django数据库设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
也许使用不同的会话引擎可以解决这个问题,或者在 settings.py
中进行一些其他配置