【问题标题】:Global variable only for one user全局变量仅适用于一个用户
【发布时间】:2017-09-29 23:17:16
【问题描述】:

我正在构建一个 Django 应用程序,我需要您的帮助来管理我的用户的会话。

现在,我的 index.html 是我的登录页面。它是一个表单(用户名、密码)。 当用户单击登录时,我得到表单,将其与我的用户 SQL 表进行比较,然后如果匹配,我将一些全局变量 (firstname1,lastname1) 渲染到 profile_page.html 。假设我只是使用 (username1,password1) 登录。

当我在另一台计算机上使用另一个登录 (username2,password2) 尝试我的应用程序时,它会将我带到 profil_page.html 并且我可以在我的页面上看到 (firstname2,lastname2)。

问题是,当我回到第一台登录的计算机(用户名 1,密码 1)时,我刷新页面,现在我在页面上看到(名字 2,姓氏 2)。

我猜这是会话的问题。我希望我的全局变量适用于一台计算机,而不是我的整个应用程序。

提前非常感谢。

【问题讨论】:

  • 不要重新发明轮子,Django 有一个稳定的、经过测试的 users/auth/session 系统,所以就用它吧。
  • 哦,是的:我想你已经明白为什么不应该在长时间运行的多线程/多进程应用程序中使用全局变量了?同一个进程将处理多个请求,因此每次调用写入/变异 gobals 的视图时,它都会覆盖以前的值。如果您有多个并发进程并且任何用户请求都可以由任何进程提供服务,那就更有趣了。

标签: python django


【解决方案1】:

如果您想要每个用户的变量,只需创建一个会话变量。这样,除非用户会话过期,否则它将保持不变。

request.session['name'] = 'hello'

【讨论】:

  • 是的,除非会话不是大写的
  • @Daniel 谢谢。解决它。我已经有一段时间没有使用它们了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多