회원가입/로그인 기능이 들어있는 곳은
user (app) / views.py
로그인은 sign_in_view() 함수에 들어있다.
로그인 요청은 POST 요청이다.
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
# 해당 username 사용자를 UserModel에서 찾기
me = UserModel.objects.get(username=username)
if me.password == password: # 있다면 pw를 DB와 비교
request.session['user'] = me.username # 동일하면 사용자를 세션에 추가; 로그인 상태로 만들어주고
return HttpResponse(me.username)
else: # 아니라면 다시 로그인 화면
return redirect('/login')
elif request.method == 'GET':
return render(request, 'user/signin.html')
from django.shortcuts import render, redirect
from .models import UserModel
from django.http import HttpResponse
from django.contrib.auth import get_user_model
from django.contrib import auth # 추가
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
# UserModel이 아니라 인증기능 authenticate 모델을 가져오기
# 현재 입력 pw와 암호화된 pw가 일치하는지, 그게 사용자와 일치하는지까지 확인
me = auth.authenticate(request, username=username, password=password)
# me = UserModel.objects.get(username=username) # '나'라는 사용자를 가져오기
if me is not None: # 사용자가 있는지 없는지만 확인하면 된다. 위의 me에서 모든 사용자의 정보를 체크하기 때문.
# if me.password == password: # pw를 비교하는 게 아니라
auth.login(request, me)
# request.session['user'] = me.username
return HttpResponse(me.username)
else:
return redirect('/login')
elif request.method == 'GET':
return render(request, 'user/signin.html')
from django.shortcuts import render, redirect
from .models import UserModel
from django.http import HttpResponse
from django.contrib.auth import get_user_model
from django.contrib import auth
def sign_in_view(request):
if request.method == 'POST': # 화면에서 정보를 입력 받음
username = request.POST.get('username', None)
password = request.POST.get('password', None)
# 받은 정보를 django module로 넣어준다; 사용자가 있다면 변수 me에 사용자를 넣어준다.
me = auth.authenticate(request, username=username, password=password)
if me is not None: # 사용자가 있다면
auth.login(request, me) # 로그인을 한다.
return HttpResponse(me.username)
else:
return redirect('/login')
elif request.method == 'GET':
return render(request, 'user/signin.html')