Django已经有了一个组和权限系统,这可能足以满足您的需要.
http://docs.djangoproject.com/en/dev/topics/auth/
通常,在您的代码中判断用户是否有权限.用户有他自己的权限和他所属组的权限.您可以从管理控制台轻松地进行管理.
您需要注意两个部分.
- 判断请求页面的用户
有这样做的许可.
- 仅在以下情况下显示指向用户的链接
有这个权限.
1.您可以在decorator 中判断权限,如下所示:
from django.contrib.auth.decorators import permission_required
@permission_required('polls.can_vote')
def some_view(request):
对于2.当前登录用户的权限存储在模板变量{{perms}}中.此代码判断与上面相同的权限.
{% if perms.polls.can_vote %}
<a href="/vote">vote</a>
{% endif %}
要生成链接列表,您可以迭代user.get_all_permission()并从字典中获取链接(或生成链接的函数):
def more_elaborate_list_of_links_for_a_perm(user):
return ["/link1", ...]
_LINKS = {
'polls.can_vote' : lambda u: ["/user/specific/link/" + u.id],
'polls.can_close': lambda u: ['/static/link/1', 'static/link/2'],
'polls.can_open' : more_elaborate_list_of_links_for_a_perm
}
def gen_links(user):
# get_all_permissions also gets permissions for users groups
perms = user.get_all_permissions()
return sum((_LINKS[p](user) for p in perms if p in _LINKS), [])
可能还有很多其他的方法.