장고는 이미 목적을 위해 충분한 될 수있는 그룹 및 권한 시스템을 가지고 있습니다. 사용자가 권한이 있는지
http://docs.djangoproject.com/en/dev/topics/auth/
일반적으로 코드에서 당신은 확인합니다. 사용자는 자신의 권한과 자신이 속한 그룹의 권한을가집니다. 관리 콘솔에서 쉽게 관리 할 수 있습니다.
살펴볼 부분이 두 부분 있습니다.
- 페이지를 요청하는 사용자에게 권한이 있는지 확인하십시오.
- 에게 권한이있는 경우에만 사용자에게 링크를 표시하십시오.
1. 위해 당신은 같은 장식의 권한을 확인할 수 있습니다 2.를 들어 현재 로그인 한 사용자의 권한이 템플릿 변수 {{파마}}에 저장됩니다
from django.contrib.auth.decorators import permission_required
@permission_required('polls.can_vote')
def some_view(request):
. 이 코드는 위와 동일한 권한을 검사합니다.
{% if perms.polls.can_vote %}
<a href="/vote">vote</a>
{% endif %}
는 user.get_all_permissions (반복 수있는 링크 목록)을 생성하고 링크를 가져 오기 (또는 링크 생성 기능)을 딕셔너리에서하려면 다른 아마 많은 사람들이있다
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), [])
을 구혼.
얘들 아, 장고 허가 시스템은 내 요구에 맞게하지 않습니다. 이것이 아키텍처 도움말을 요청하는 이유입니다 : P – slypete