问题标签 [django-sessions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9641 浏览

python - 在 django 中:如何更新当前会话的到期日期?

我有一个用户登录。我如何延长/更新从请求中收到的会话的到期日期?提前致谢!

0 投票
4 回答
7234 浏览

django - AttributeError:“WSGIRequest”对象没有属性“会话”

我在随机时间不断收到此错误,每当我触摸 django.wsgi 文件时,它都会得到修复,仅在几个小时后再次发生。我不知道该怎么做。我的 middleware_classes 如下:

当我执行“if request.session”语句时,错误总是发生在 facebook 中间件中。谢谢

0 投票
1 回答
1343 浏览

python - Django:管理会话变量以管理浏览器后退按钮

我正在创建一个基于网络的模拟试卷,它需要相当安全。

需求是 每个问题都可以尝试和回答一次。都是多项选择题一旦回答了一个问题并按下了提交,那么该会话必须过期,并且不能通过后退按钮或其他方式出现相同的问题。

在浏览器崩溃或系统崩溃的情况下,学生必须能够返回到上一个正在尝试但尚未回答和提交的问题。

在 Django 中实现它时采用的最佳策略是什么。一旦按下提交按钮,如何自动终止会话?您如何确保通过按下后退按钮,您无法访问尝试和回答的问题?

我尝试使用谷歌搜索,但我无法指出可以更好地指导我的资源。我看过 django session 文档,但我不确定我是否知道正确的方法。任何建议都可以提供帮助

0 投票
1 回答
2310 浏览

django - 如何处理上传文件的临时存储

在我的 django 应用程序中,我有一个多步骤注册,几乎没有条件参数。因此,我想在会话中存储表单中的数据。不幸的是,会话使用 pickle 序列化数据,它不支持文件序列化并导致
PicklingError: Can't pickle <type 'cStringIO.StringO'>: attribute lookup cStringIO.StringO failed. 如何解决这个问题?我应该将图像作为变量发送到所有后续视图,还是将其作为 GET 参数发送或以其他方式发送?我不确定是否需要任何示例代码,因为问题看起来很清楚。

0 投票
1 回答
3988 浏览

python - 在 Django 中使用会话

我在 Django 中使用会话来存储登录用户信息以及其他一些信息。我一直在阅读 Django session 网站,但仍有一些问题。

来自 Django 网站:

默认情况下,Django 将会话存储在您的数据库中(使用模型 django.contrib.sessions.models.Session)。虽然这很方便,但在某些设置中,将会话数据存储在其他地方会更快,因此可以将 Django 配置为将会话数据存储在文件系统或缓存中。

还:

对于持久的缓存数据,设置 SESSION_ENGINEdjango.contrib.sessions.backends.cached_db. 这使用直写缓存——每次写入缓存也将写入数据库。如果数据尚未在缓存中,则会话读取仅使用数据库。

是否有一个好的经验法则来使用哪个?cached_db似乎它总是一个更好的选择,因为最好的情况是,数据在缓存中,最坏的情况是它在数据库中。一个缺点是我必须设置 memcached。

默认情况下,SESSION_EXPIRE_AT_BROWSER_CLOSE设置为False,这意味着会话 cookie 将在用户浏览器中存储的时间为SESSION_COOKIE_AGE。如果您不希望人们每次打开浏览器时都必须登录,请使用此选项。

是否有可能两者都有,会话在浏览器关闭时过期并给出一个年龄?

如果 value 是一个整数,会话将在几秒的不活动后过期。例如,调用 request.session.set_expiry(300)将使会话在 5 分钟后到期。

什么被认为是“不活动”?

如果您使用的是数据库后端,请注意会话数据可能会累积在django_session 数据库表中,并且 Django 不提供自动清除功能。因此,定期清除过期会话是您的工作。

这意味着,即使会话过期,我的数据库中仍然有记录。究竟将代码“清除数据库”放在哪里?我觉得您需要一个单独的线程来每隔一段时间(每小时?)通过数据库并删除任何过期的会话。

0 投票
2 回答
37725 浏览

python - 检查是否设置了会话密钥

我正在尝试在 Django 中创建一个相对简单的购物车。我将购物车存放在request.session['cart']. 因此,当向其中添加任何内容时,我需要访问此会话中的数据。但是,如果会话尚未设置,我将无法访问它而不会收到错误消息。有什么方法可以检查是否设置了会话,以便在不存在的情况下进行设置?

0 投票
2 回答
142 浏览

python - 在 Django 中根据用户身份验证设置模型字段的值

我正在尝试根据用户是否登录有选择地处理我的 Django/Python 应用程序中的字段。基本上,我有一个类似于以下的模型:

我想要做的是,如果用户碰巧登录(并且可以根据针对某些权限后端的测试访问此资源),则将文件属性设置为一个值,如果用户未登录,则设置另一个值因此,当任何客户端代码尝试访问 Resource.file 时,如果用户未登录“http://mysite.com/dummy_resource_for_people_without_access”,它将得到类似以下内容。但是,如果用户已登录并通过了一些权限测试,那么 resource.file 的值实际上将是该资源的真实 url(包括访问该资源的任何安全密钥等)。

根据我的阅读,您似乎只能通过将请求上下文从视图函数传递给模型来考虑当前登录的用户。但是,在上述用例中,我试图在模型中更紧密地控制访问,而不需要客户端代码调用特殊函数。

0 投票
2 回答
1496 浏览

django-sessions - 在 Django 中,如何找到当前登录用户的所有其他活动会话?

我想通知用户她也从其他计算机登录,并可以选择关闭这些其他会话。不幸的是,在不直接破解数据库的情况下,如何在 Django 中做到这一点并不是很明显。

0 投票
1 回答
691 浏览

python - Django:在中间件中检索会话或 cookie

我可以在中间件中获取当前会话或 cookie 吗?

我试过了,但我得到了:

0 投票
4 回答
5797 浏览

django - 巨大的 Django 会话表,正常行为还是错误?

也许这是完全正常的行为,但我觉得这张django_session桌子比它应该的要大得多。

首先,我每天运行以下清理命令,因此大小不是过期会话引起的:

号码:

  • 我们每天有大约 5000 名唯一身份访问者(不包括机器人)。
  • SESSION_COOKIE_AGE设置为默认值,2周
  • 该表有超过1,000,000 行

因此,我猜测 Django 还会为访问该站点的所有机器人生成会话密钥,并且这些机器人不存储 cookie,因此它会不断生成新的 cookie。

但是……这是正常的行为吗?是否有设置让 Django 不会为匿名用户生成会话,或者至少......没有为不使用会话的用户生成会话?