2017-09-17 4 views
0

어제는 Stackoverflow question about putting a permissioning check on a class-based-view이었습니다. 해결책은 PermissionDeniedMixin을 통합하는 것처럼 보입니다. 그것은 또한 내가 시도 할 수있는 것처럼 보입니다 UserPassesTestMixin from Django-braces. , 당신은 클래스 정의 자체 을 장식 할 필요가 클래스 기반 뷰의 모든 인스턴스를 장식하는클래스 또는 dispatch() 메소드를 꾸미기?

:

이는 감각을 만들었지 만, 나는 dispatch() 방법에 읽는 몇 가지 배경을 수행하고 this part of the documentation에 발견 . 이렇게하려면 클래스의 dispatch() 메서드에 데코레이터를 적용합니다.

왜 클래스 자체보다는 권한 믹스 인으로 인스턴스를 꾸밀 필요가 있습니까?

답변

0

데코레이터 대신에 믹스 인을 쓰는 주된 이유는 믹스 인이 클래스이고 따라서 확장 가능하다는 것입니다. 예를 들어 LoginRequiredMixin.handle_no_permission의 동작을 약간 수정하려는 경우 LoginRequiredMixin을 확장하고 handle_no_permission을 재정의하는 새 클래스를 작성하고 해당 수정 된 클래스를 대신 사용하면됩니다. 기능적으로, login_required 데코레이터는 사용자 정의하기가 쉽지 않습니다.

관련 문제