我是新手,django/python
并且正在通过我的webapp
. 我需要帮助来解决我的一个问题。
在我的应用程序中,我计划将每个用户(来自auth_user
)分配给组之一(来自auth_group
)。每个组可以有多个用户。我已经进入auth_group
,auth_user
和auth_user_groups
。这是我的问题:
在登录时,我想检查登录用户属于哪个组?
我想将该组信息保留在会话/缓存中,以便所有页面都只能显示有关该组的信息。
如果你有任何示例代码会很棒。
我是新手,django/python
并且正在通过我的webapp
. 我需要帮助来解决我的一个问题。
在我的应用程序中,我计划将每个用户(来自auth_user
)分配给组之一(来自auth_group
)。每个组可以有多个用户。我已经进入auth_group
,auth_user
和auth_user_groups
。这是我的问题:
在登录时,我想检查登录用户属于哪个组?
我想将该组信息保留在会话/缓存中,以便所有页面都只能显示有关该组的信息。
如果你有任何示例代码会很棒。
1)作为user
的实例auth.models.User
,可以通过 获取用户所属的所有组user.groups
。如果您想在登录时询问,那么您应该在登录视图中执行此操作。
2)您可以使用会话或缓存的方法来处理,这无关紧要,但是一旦有了组,您就需要渲染具有该值的页面,我的意思是,您需要将组提供给模板渲染,才能做到这一点我建议您使用自定义上下文处理器。
通过 context_processor 代码示例支持@trinchet 的非常好的答案。
放入webapp
一个名为的新文件context_processors.py
并在其上写入以下行:
def user_groups(request):
"""
Add `groups` var to the context with all the
groups the logged in user has, so you can access
in your templates to this var as: {{ groups }}
"""
groups = None
if request.user.is_authenticated():
groups = user.groups
return {'groups': groups}
最后settings.py
添加'webbapp.context_processors.user_groups'
到TEMPLATE_CONTEXT_PROCESSOR
:
TEMPLATE_CONTEXT_PROCESSORS = (
'webbapp.context_processors.user_groups',
)