[패스트캠퍼스 수강 후기] 파이썬 인강 100% 환급 챌린지 7 회차 미션

2020. 11. 8. 22:48Coding/Python-Fastcampus

728x90

04. 로그인 - 02. 로그인 만들기 - 1

로그인 화면을 만들어야하는데, register.html에서 email과 re-password를 지우고 몇가지만 고치면 훌륭한 로그인 화면이 된다.
register.html을 복사해서 login.html을 만들자.

 

views.py에서 render를 return해주는 login함수를 만들고,

urls.py에서 login에 연결해준다.

 

views.py

전체적인 흐름은 register함수와 똑같고,
중간에 check_password라는 기능을 불러와서 사용했다.
from django.contrib.auth.hashers import make_password, check_password
make_password와 마찬가지로 기본으로 지원해주는 기능이다.

 

앞으로 #로그인 처리. 부분에
session과 redirect부분을 추가하면된다.

 

 

 


04. 로그인 - 03. 로그인 만들기 - 2

fcuser의 views.py

session.

request.session['user'] = fcuser.id
request안의 session기능을 이용한다.

 

redirect.

from django.shortcuts import render, redirect
redirect기능을 추가해서 사용하면된다.

 

fc_community의 urls.py

주소에 아무것도 안붙였을때 home으로 가게끔 연결.

 


 

session활용.

views.py

login 담았던 fcuser.id를 담은 user을 아래처럼 불러올 수 있다.
user_id = request.session.get('user')

user_id는 db상에서 pk로 쓰이기 때문에 fauser = Fcuser.objects.get(pk=user_id)로 fcuser에 대한 정보를 불러올 수 있다.

fcuser를 가져오면 해당 유저의 모든 정보에 접근이 가능하다.
위 코드에서는 간단하게 HttpResponse를 이용해서 메인페이지에서 해당 유저의 username을 출력하게끔 만들었다.

 

session은 브라우저안의 cookie안에 session이 사이트별로 각각 저장이된다.

 


 

04. 로그인 - 04. 퀴즈 - 세션 원리 복습과 활용

1. 브라우저의 session의 정보가 저장된곳은? - Cookie
Chrome의 경우 개발자도구의 Applicaion-Cookies에서 볼 수 있다.

2. 코드상에서session을 저장할때 사용하는 방법은? - request.session['user'] = fcuser.id
사용자를 구분할 수 있는 고유값을 저장하면된다.

저장한 session을 사용하는 방법은? - user_id = request.session.get('user')

 

 


 

 

logout.

views.py
urls.py

request.session.get('user')로 session이 있는지 여부를 확인한다.
session이 없으면 로그인을 안한 상태이므로 넘어가고,
session이 있으면 로그인을 한 상태이므로 del(request.session['user'])로 sessioin을 지운다.

 

 

 

docs.djangoproject.com/en/3.1/topics/http/sessions/

 

How to use sessions | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

자세한 내용은 역시 정식문서가 가장 좋다.

근데, 영어임...ㅎㅎ

 

 

 

 

올인원 패키지 : 파이썬 웹 개발👉https://bit.ly/33a7nvc

728x90