基本上我想在 Django 中创建一个变量,但我不知道如何。
更准确地说,我希望用户在登录站点时选择一个特定的项目(例如通过 ChoiceField)。然后,只要他不选择另一个项目,站点就“知道”他选择了哪个项目,因此他可以执行与该项目相关的一些操作。
这怎么可能?会话变量是要走的路吗?或者也许是缓存系统?一些提示将不胜感激:)
如果我不够清楚,请告诉我
基本上我想在 Django 中创建一个变量,但我不知道如何。
更准确地说,我希望用户在登录站点时选择一个特定的项目(例如通过 ChoiceField)。然后,只要他不选择另一个项目,站点就“知道”他选择了哪个项目,因此他可以执行与该项目相关的一些操作。
这怎么可能?会话变量是要走的路吗?或者也许是缓存系统?一些提示将不胜感激:)
如果我不够清楚,请告诉我
是的 - 您需要使用会话变量,因为这些变量会持续存在,但仅限于每个用户。缓存将为所有用户保留。
看看这个: Django 文档中的“如何使用会话”。
本质上,您只需将会话引擎设置为settings.py
:
SESSION_ENGINE = 'django.contrib.sessions.backends.cookies'
然后在视图中你可以这样做:
request.session['project'] = 'Some Project'
然后在模板中您可以使用:
{{ request.session.project }}
只要会话存储启动,会话就很好,这意味着如果您需要此功能可靠,则必须使用数据库会话后端(或类似 Redis 的东西)。
您还可以添加ForeignKey(Project, on_delete=SET_NULL)
到用户配置文件模型并使用它来存储当前项目。