인프런 커뮤니티 질문&답변

쑤시리님의 프로필 이미지
쑤시리

작성한 질문수

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

감이 잡히지않아 질문드립니다! 특정 Project게시판에는 관리자만 작성하도록 하려면

작성

·

116

0

관리자인증 데코레이터는 작성했는데 

articleapp의 forms.py를 수정해야하는지 model을 수정해야할지...
아니면 Project CreationView에 get_queryset 으로 해당  프로젝트pk에 글을쓸때 권한인증을 해야할지 도무지 감이 잡히지않아 질문드립니다 

그리고 get_queryset을 사용하면 프로젝트게시판을 만들때 프로젝트모델이 아닌 get_queryset안의 내용만 적용되나요? 

답변 1

1

Hyong Sok Park님의 프로필 이미지
Hyong Sok Park
지식공유자

안녕하세요.
질문 확인했습니다.

일단 get_queryset 을 사용하면 어떻게 되는지 말씀 드리겠습니다.

사용하게 되면, 프로젝트 객체들 전체에 대해서 CRUD 패턴을 적용하는 것이 아닌,
해당 queryset 내부의 객체들만 적용할 수 있게 됩니다.

말씀하신 그대로죠.

model = Project

라고 적어놓는 것은,
따로 설명드리지는 않았지만 get_queryset 으로 변경하면

def get_queryset:
    return Project.objects.all()

과 같은 효과를 가집니다.
그렇다면 filter 와 같은 메서드를 통해 적용될 객체 범위를 조절할 수도 있겠죠.


그리고 만약 특정 게시판에 관리자만 게시글을 작성하는 기능을 만들려면,
여러가지 방법이 있을 수 있겠죠.

특정 ID 를 가진 게시판에 게시글을 작성하려 하면,
해당 유저가 관리자인지 is_superuser 혹은 is_staff 등의 값으로 인증하는 과정을 만들수도 있을것이구요.
이때 구현하는 내용은 form_valid 메서드에 포함시킬수도,
decorator 내부에 작성할 수도 있을 것 같습니다.

아니면 애초에 관리자만이 접근할 수 있는 게시판을 Project 라는 앱에 포함시키지 않고,
별도의 앱으로 분리하는 방법도 가능하겠죠.
물론 게시판 한두개만 그런식으로 관리하려면 조금 귀찮은 일이 되겠지만,
Project 앱의 로직을 너무 복잡하게 만들고 싶지 않다면 이런 방법도 가능할 것 같습니다.


답변이 도움이 되셨길 바랍니다.

좋은하루 보내시구요!
감사합니다-

쑤시리님의 프로필 이미지
쑤시리

작성한 질문수

질문하기