基本上我想在Django中做一个变量,我不知道如何。Django:使变量持久
更确切地说,我希望用户在登录网站时(例如通过ChoiceField)选择特定项目。然后,只要他不选择另一个项目,该网站“知道”他选择的项目,以便他可以执行与此项目相关的一些操作。
这怎么可能?会议是否会变化?或者,也许缓存系统?一些提示,将不胜感激:)
请让我知道,如果我不是足够清晰的
基本上我想在Django中做一个变量,我不知道如何。Django:使变量持久
更确切地说,我希望用户在登录网站时(例如通过ChoiceField)选择特定项目。然后,只要他不选择另一个项目,该网站“知道”他选择的项目,以便他可以执行与此项目相关的一些操作。
这怎么可能?会议是否会变化?或者,也许缓存系统?一些提示,将不胜感激:)
请让我知道,如果我不是足够清晰的
是 - 你需要使用一个会话变量,因为这些坚持,但只有每个用户。缓存将为所有用户持续存在。
查看:'How to use sessions'来自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)
添加到user profile model并用它来存储当前项目。
现在,用户不需要登录该网站,我的auth_users表尚未填写。是否有必要知道用户使用会话变量? – Johanna
不,用户不需要注册。他们只会被给予一个cookie来识别它们。 –
我用一小段代码更新了我的答案。 –