나는 장고에서 권한 시스템을 구현했지만 아주 기본적인 것이므로 더 나은 방법이 있다고 생각합니다.Django에서 권한을 올바르게 수행하는 방법
필자의 이해에서 특정 사용자에게 부착되는 레이블은 무엇인지 궁금합니다. 무엇이 나 한테 무슨 일입니까? 액션 나는 그것들과 연결됩니다. 예를 들어 can_edit
은 특정 사용자가 수행 할 수있는 작업의 이름 일 뿐이며 나중에 나에 의해 결정됩니다. 나는 특정 모델에 can_edit
권한을 만들기 위해 명령 줄을 사용
,
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import Group, User, Permission
itmod_ct = ContentType.objects.get(app_label='myapp', model='mymodel')
can_modify = Permission(name='Can Modify', codename='can_modify_model', content_type=itmod_ct)
can_modify.save()
#some group of users g
g.permissions = (can_modify,)
g.save()
다음 템플릿에, 나는
{% if perms.myapp.can_modify_model %}
... action that can be performed
{% endif %}
주요 문제와에 둘러싸 관련 기능하여 시행 이 접근법은 앞으로 API를 구현한다고 가정합니다. 예를 들어 동일한 작업을 수행하지만 템플릿이 없으면 응용 프로그램은 마치 모든 권한/권한이없는 것처럼 구현됩니다. 또 다른 (철학적 인) 문제는 템플릿에서 비즈니스 로직을 사용하는 것입니다. 또한 일부보기는 일부 사용자 만 편집 할 수 있다는 점을 제외하면 모든 사용자의 공통된 의견입니다.