2011-11-08 2 views
1

사용자가 기사를 게시하고 투표 할 수있는 장고 프로젝트를 진행 중입니다. 그러나 사용자는 자신의 기사에 대해 투표를하지 않아도됩니다. 현재 나는 장고 보호자와 허가 시스템을 사용하고 있습니다. 내 생각은 일종의 '반 허가'를 부여하여 저자 인 은 자신의 기사에 투표를 할 수 없습니다.django에서 'anti-permissions'로 사용자 부여

필자가 추론하는 바는 이러한 방식으로 모든 권한을보기 기능과 별도로 (내부에 조건을 넣는 대신) 통합 프로토콜에서 처리 할 수 ​​있다는 것입니다. 이와 같은 미래의 요구 사항이 발생하면 우아하게 처리 할 수 ​​있습니다.

그러나이 방법으로 "사용 권한"을 사용하는 것은 의미 상으로 올바르지 않습니다. 그것을하는 더 좋은 방법이 있는지 궁금합니다.

도움 주셔서 감사합니다. :)

+1

http://djangosnippets.org/snippets/1148/ – sehe

+0

사용자가 투표하려면 로그인해야 할 경우 기사 작성자와 사용자 객체를 비교 한 다음 링크의 기능을 변경하고, 버튼, 투표 등. 아마도 더 좋은 방법이있을 것입니다. –

+0

권한 시스템과 데코레이터로 모든 사용자 허가를 처리하고 싶었지만 상황에 매우 의존하는 것처럼 보입니다. 그래서 대신 나는 그것들을 다르게 코딩 할 것입니다. '사용자는 자신의 게시물에 투표해서는 안됩니다.'와 같이 '새로운 사용자는 게시 할 수 없어야합니다.'는보기 기능을 체크인 할 것입니다. 권한 장식자가 처리합니다. 또한 권한이없는 사용자가 다른 것을 볼 수 있도록 템플릿에서 작업을 수행합니다. 스 니펫에 대한 @sehe, 바로 지금 당장 문제가 아니지만 나중에 유용 할 수 있습니다 :) –

답변

1

컨텍스트를 취한 다음 사용자가 투표 할 수있는 개체 목록을 반환하는 관리자를 작성합니다.

보기에서이 관리자를 사용하십시오.

+0

이 상황을 처리하기 위해 사용자 지정 권한 검사 기능을 작성할 수도 있습니다. 따라서 'user.has_perm ("can_vote")'를 사용하는 대신 사용자에게이 권한이있는 경우에만 가져옵니다. 'check_perm (user, article, "can_vote") 함수를 작성하고 사용자가 거기 기사. –

관련 문제