[Django] Login, Logout

ddalkigum·2020년 11월 8일
1

Django

목록 보기
1/4
post-thumbnail

장고 공식홈페이지

Using the Django authentication system | Django documentation | Django

장고 CBV에 관해서 알고 있으면 편리함

Django Class-Based-View Inspector -- Classy CBV

노마더코더

노마드 코더 Nomad Coders


오늘은 늦잠자기도 했고, 속이 안좋아서.... 완전 간단한 로그인, 로그아웃기능을 만들고,
서버에 관한 공부를 했다.

데이터 구조와, 운영체제에 관한 책을 좀 보고 싶어서 갔는데
책보러 잠깐 서점에 갔는데 입구에 들어가자마자 눈에 띄는 책이 있엇다

사진으로 보니까 엄지손가락 왜케 짧아보이지 ㅋㅋㅋㅋㅋ

트렌드 코리아 2021 이란 책 보는데 시간은 많이 쓴거같다.
재작년부터 보기 시작했는데, 신기할 정도로 맞는 부분이 많고, 한권의 책을 쓰기 위해서 분석을 얼마나 했을까 생각이 들기도 한다 😂
개발관련 책도 읽고 싶은게 많긴하지만, 개인적으로 좋아하는 책이기도 하고,
내가 읽고 싶었던 책이 없어서 한권만 구매하고 돌아왔다.

여러 일을 하면서 느낀게 있다면,
바깥에 대해서 알고싶은게 있으면,
책 만한게 없는것 같다.
가성비가 좋다? 가 맞는거 같다 ㅋㅋㅋㅋ


Login

class UserLoginView(View):
    def get(self, request):
        form = UserLoginForm
        return render(request, "login.html", context={"form": form})

    def post(self, request):
        form = UserLoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            user = authenticate(request, username=username, password=password)
            if user is not None:
                login(request, user)
                return redirect("rooms:home")
        return render(request, "users:login", context={"form": form})

위 처럼 class로 login view를 만들었다

def login_view(request):
	if request.mehtod === "GET":
		pass
	elif request.method == "POST":
		pass

위에 보이는 함수로 만든 코드와 같은 역할을 한다.
굉장히 간단하고, 모델을 만들고, 뷰를 만들면서
가장 처음으로 만드고,
장고라는게 어떻게 돌아가는지 보기에 좋은 부분이다.

여기서 헷갈라는 부분은 post를 보낼때 왜 request.POST가 들어가는지...
내 생각엔 GET부분에서도 사용하는게 맞는데,
굳이 쓸 필요가 없기때문에 생략이 가능한게 아닌가 싶다.

form = UserLoginForm

form = UserLoginForm(request.POST)

"""
form에서 request.POST가 들어가지 않는다면 
form.is_valid()에서 Type Error가 발생하게 된다.

"""

GET, POST

html에서 get, post, put, delete ... 여러가지가 있는데
가장 많이 쓰이는 건 get, post이고,
put과 delete는 Django rest api를 만들때 말고는 사용한 적이 없는것 같다.

GET = Read
POST = Create
PUT = Update
DELETE = Delete

이정도로 보면 될거같다.
좀 더 자세하게 다루는 것은 나중에 공부를 조금더 하고 블로그, 노트에 정리하면서
다뤄 보겟습니다아~


Logout

def log_out(request):
    logout(request)
    return redirect(reverse("rooms:home"))

Login 뷰에 비하면 logout뷰는 사실 되게 간단하게 구성되어 있는데,
처음 장고를 접할때, 겨우 이걸로 로그아웃이란게 되는건가? 생각이 들정도로 간단하다.

물론 logout의 Definition을 보게 된다면 그렇지 않긴하다.

오늘은 프로그래밍 공부라기 보단, 여러 생각이 많이 들게 되는 하루였다....
늦은만큼 더 열심히 따라 가야지

profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒

0개의 댓글