views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from django.views import View
from .models import Room
@login_required
def rooms(requset):
rooms = Room.objects.all()
return render(requset, 'room/rooms.html', {'rooms':rooms})
@login_required -> 사용자가 로그인한 경우 정상적으로 실행 / 함수형 뷰에만 적용 가능, 클래스뷰 형 사용x
클래스뷰 형에는
from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
이런 형태로 하면 된다고 하는데 아직 공부를 더 해야할 듯 내 나름대로 바꿔봤는데 오류만 뜸 ㅠ
LoginRequiredMixin을 상속받는 방법으로 Mixin은 django 뿐만 아니라 객체 지향프로그래밍 전반에서 쓰이는 개념
여러 컴포넌트에서 재사용이 가능한ㄴ 기능들을 정의하고 있는 것이라 함
django에서 클래스뷰가 빛을 발하는 것이 이것을 이용해 확장이 용이하다는데 어렵당
사용법은 LoginRequiredMixin을 import 한 뒤 클래스뷰형 뷰에서 상속받기만 하면 된다
login_url 변수에는 login 페이지의 url를 넣어주고,
redirect_field_name을 설정해주지 않으면 로그인 후 redirect될 페이지의 url이 next라는 필드명으로 담기게 된다 함 redirect_field_name을 설정해주면 이 필드명을 변경해주는 것.
ㅊㅊ-> https://developer-ankiwoong.tistory.com/971 (사용자 등급 관련해 정상적으로 실행되는 부분도 있음)
'FrameWork > Django' 카테고리의 다른 글
프로젝트를 시작할 때 깃허브 잊지 않ㄱㅣ ~ (0) | 2022.07.11 |
---|---|
Django (0) | 2022.07.08 |
[Django] django 모델(model) Field 종류 (0) | 2022.06.29 |
[ Django ] render 와 redirect 의 차이 (0) | 2022.06.29 |
[Django] is_anonymous 와 is_authenticated 의 차이 (0) | 2022.06.29 |