Django:使变量持久化

时间:2011-08-24 09:50:18

标签: django global-variables django-sessions django-cache persistent-data

基本上我想在Django中创建一个变量persitent,我不知道如何。

更确切地说,我希望用户在登录站点时选择特定项目(例如,通过ChoiceField)。然后,只要他没有选择另一个项目,该网站就“知道”他选择了什么项目,这样他就可以做一些与该项目相关的行动。

怎么可能?会话变量是否可行?或者可能是缓存系统?一些提示将不胜感激:)

如果我不够清楚,请告诉我

2 个答案:

答案 0 :(得分:4)

是 - 您将要使用会话变量,因为这些会持续存在但仅限于每个用户。缓存将持续存在于所有用户。

从Django文档中查看:'How to use sessions'

基本上,您只需要在settings.py中设置会话引擎:

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

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

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

然后在模板中,您可以使用:

{{ request.session.project }}

答案 1 :(得分:1)

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

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