로그인 기능 만들기
1. user앱의 views.py로 이동
from django.http import HttpResponse
def sign_in_view(request):
if request.method == 'POST':
# 메시지 출력
return HttpResponse("로그인 성공!")
elif request.method == 'GET':
# 로그인 페이지 보여주기
return render(request, 'user/signin.html')
2. html 의 form 태그 속성 넣기
url주소에 맞는 함수가 실행(url연결해줬던거 기억하기)
<form class="form-area" action="/url주소/" method="post">
{% csrf_token %}
<div class="form-group mt-2 mb-2">
<input
3. 세션 기능 사용 (user앱의 views.py로 이동) 1번코드랑 비교하면서 보기
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
return HttpResponse("로그인 성공!")
elif request.method == 'GET':
return render(request, 'user/signin.html')
4. username과 password를 받아서 패스워드 검사하기위해 사용자 불러오기
UserModel을 사용해서 사용자 불러옴
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
# 사용자 불러오기
me = UserModel.objects.get(username=username)
# 저장된 사용자의 패스워드와 입력받은 패스워드 비교
if me.password == password:
# 세션에 사용자 이름 저장
request.session['user'] = me.username
# 메시지 출력
return HttpResponse("로그인 성공!")
# 로그인이 실패시
else:
# 다시 로그인 페이지를 보여주기
return redirect('/sign-in')
elif request.method == 'GET':
return render(request, 'user/signin.html')
Django에서 제공하는 사용자모델로 로그인 기능을 수정
(더 간단하게 코드 수정)
1. user/views.py
수정 전
me = UserModel.objects.get(username=username)
# 저장된 사용자의 패스워드와 입력받은 패스워드 비교
if me.password == password:
# 세션에 사용자 이름 저장
request.session['user'] = me.username
# 메시지 출력
return HttpResponse("로그인 성공!")
수정 후
# 사용자 auth 기능
from django.contrib import auth
...
# 사용자 불러오기
me = auth.authenticate(request, username=username, password=password)
# 저장된 사용자의 패스워드와 입력받은 패스워드 비교
if me is not None:
#
auth.login(request, me)
return HttpResponse("로그인 성공")
from django.contrib import auth
: 사용자 인증 기능을 가져와서 비밀번호 체크, 로그인 기능까지 간단하게 해결 가능
me = auth.authenticate(request, username=username, password=password)
: 사용자의 요청(request) 객체와 입력된 사용자 username 및 password를 사용하여 authenticate 함수를 호출
authenticate 함수는 입력된 사용자 이름과 암호를 사용하여 데이터베이스에서 사용자를 찾고 검증함
일치하는 사용자가 있고 패스워드가 올바른 경우, authenticate 함수는 해당 사용자의 인스턴스를 반환함
if me is not None:
: 응답받은 me 변수의 값을 확인 반환된 사용자 객체(me)가 None이 아닌 경우, 인증 성공으로 판단
auth.login(request, me)
: 인증이 성공했다면 (me가 None이 아닐 때), auth.login() 함수를 통해 사용자를 로그인 처리함
'Django' 카테고리의 다른 글
[Django] 장고 회원가입 - 사용자 조회하기 (0) | 2023.05.25 |
---|---|
[Django] 장고 회원가입 - 중복방지 (0) | 2023.05.25 |
[Django] 장고 회원가입 기능 만들기 (0) | 2023.05.25 |
[Django] url - view - template 연결 (화면 띄우기) (0) | 2023.05.24 |
[Django] Django Model 만들기/ Admin 기능 (0) | 2023.05.24 |