초보 개발자

django class mixins 본문

Python/airbnb 클론

django class mixins

taehyeki 2022. 3. 15. 20:33

여러 mixin클래스가 있다.

로그인 되어있는 유저인지.

로그인 되어있지 않은 유저인지 혹은

소셜로그인으로 되어있는지 등을 확인하는 절차가 필요하다.

 

그에 따라 접근할 수 있는 페이지가 다르기 때문..

 

그걸 해결할 수 있는 것이 CBV에서는 mixin을 사용하면 되는 것이다. 

from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.mixins import UserPassesTestMixin

위의 mixin중 LoginRequiredMixin은 로그인이 되어있는지 확인을 해주고 로그인이 되어있지 않다면

로그인 url로 보내는 기능을 한다. users.py안에 mixins.py를 만들고 거기안에 custom mixin을 만들었다.

사용방법은 views.py에 임포트한 뒤에 view안에 상속하면 된다. 순서는 앞에 적어야 한다. 그래야 적용이 된다.

반대로 로그인이 되어있지 않아야 갈 수 있는 페이지도 있을 것이다. login 화면이라던지, 회원가입 화면이라던지,

이런것들은 UserPassesTestMixin를 통해서 만들 수 있다.

 

text_func에서 true가 return이 되어야지 정상작동이 된다. 만약 false가 러틴이 된다면

handle_no_permission으로 넘어간다.

따라서 home으로 리다이렉션이 되면서 error메시지도 같이 날라간다.

사용법은 아까와 마찬가지로 같이 상속을 받아주면 된다. 여기서 주의할 점이 LoginOnlyView를 제일 먼저 해주어야 한다. 그 이유는 EmailLoginOnlyView에서는 request.user.login_method를 확인하는데 로그인 되어있지 않았을 때는

anonymouse User로 인식되기에 거기에서 login_method를 찾다보니 오류가 발생하기 때문이다. 따라서 로그인이 되어있는지 확인해주는 LoginOnlyView먼저 앞에두어야 정상 작동이 된다.

'Python > airbnb 클론' 카테고리의 다른 글

elastic beanstalk  (0) 2022.03.16
django edit-room with UpdateView  (0) 2022.03.16
django passwordchange with Form View  (0) 2022.03.15
django user-editprofile with UpdateView  (0) 2022.03.15
django userProfile with DetailVeiw  (0) 2022.03.15