1

基本上我想在Django中做一个变量,我不知道如何。Django:使变量持久

更确切地说,我希望用户在登录网站时(例如通过ChoiceField)选择特定项目。然后,只要他不选择另一个项目,该网站“知道”他选择的项目,以便他可以执行与此项目相关的一些操作。

这怎么可能?会议是否会变化?或者,也许缓存系统?一些提示,将不胜感激:)

请让我知道,如果我不是足够清晰的

回答

4

是 - 你需要使用一个会话变量,因为这些坚持,但只有每个用户。缓存将为所有用户持续存在。

查看:'How to use sessions'来自Django文档。

从本质上讲,你只需要设置会话引擎settings.py

SESSION_ENGINE = 'django.contrib.sessions.backends.cookies' 

,然后在视图中,可以这样做:

request.session['project'] = 'Some Project' 

而且在模板然后你可以使用:

{{ request.session.project }} 
+0

现在,用户不需要登录该网站,我的auth_users表尚未填写。是否有必要知道用户使用会话变量? – Johanna

+0

不,用户不需要注册。他们只会被给予一个cookie来识别它们。 –

+0

我用一小段代码更新了我的答案。 –

1

只要会话存储启动,会话就很好,这意味着如果您需要这个功能是可靠的,你必须使用数据库会话后端(或类似Redis的东西)。

您还可以将ForeignKey(Project, on_delete=SET_NULL)添加到user profile model并用它来存储当前项目。