如何在 django 中设置和获取会话变量?

Posted

技术标签:

【中文标题】如何在 django 中设置和获取会话变量?【英文标题】:How can I set and get session variable in django? 【发布时间】:2013-01-06 02:56:12 【问题描述】:

当用户登录时,我需要在会话中设置一个变量。我该怎么做?

if request.user.is_authenticated():
profile = request.user.get_profile()
request.session['idempresa'] = profile.idempresa

我的另一个问题是:

class PedidoItensForm(ModelForm):
class Meta:
    model = ItensPedido

def __init__(self, *args, **kwargs):
    profile = kwargs.pop('vUserProfile', None)
    super(PedidoItensForm, self).__init__(*args, **kwargs)

如何获取会话的“idempresa”值,以在我的查询集中使用?

【问题讨论】:

编辑:这一行:profile = kwargs.pop('vUserProfile', None) 不起作用...当我使用 inlineformset_factory 时,我不知道如何通过 vUserProfile,如果我知道如何通过vUserProfile 使用 inlineformset_factory,这个问题就解决了! 1:构建自己的中间件。或者把它放在任何进行身份验证的地方。 docs.djangoproject.com/en/dev/topics/http/middleware2:在新问题中提出新问题。 【参考方案1】:

用于设置会话变量:

request.session['idempresa'] = profile.idempresa

获取会话数据:

if 'idempresa' in request.session:
    idempresa = request.session['idempresa']

【讨论】:

@slavugan Django 会话没有 save() 方法。它们在更改时会自动保存,或者您可以通过将 request.session.modified 设置为 True 来强制保存。【参考方案2】:

用于设置会话变量:

request.session['fav_color'] = 'blue'

用于获取会话数据

fav_color = request.session.get('fav_color', 'red')

参考:https://docs.djangoproject.com/en/dev/topics/http/sessions/

【讨论】:

以上是关于如何在 django 中设置和获取会话变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Jmeter中设置和获取环境变量来测试API

在 django 模板中设置和重置变量的值

通过字符串变量在Python中设置和获取@property方法

如何在 xmpp android 中设置和获取状态

如何在 Cakephp 3.5 中设置和获取 Cookie

如何在 angular2-localstorage 中设置和获取?