如何在 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 中设置和获取会话变量?的主要内容,如果未能解决你的问题,请参考以下文章