from django.contrib.auth.models import AbstractUser
django에서 제공하는 기본적인 유저 모델을 사용할때 작성합니다.
exist_user = get_user_model().objects.filter(username=username)
get_user_model이라는 함수를 사용해서 데이터베이스에 username을 가진 사람이 있는 확인합니다.
username = request.POST.get('username', None)
password = request.POST.get('password', None)
username과 password를 화면에서 입력을 받습니다.
from django.contrib import auth
django에서 제공해주는 인증기능 묘듈 입니다.
me = auth.authenticate(request, username=username, password=password)
위에서 입력 받은 정보를 django 모듈로 넣어주고, username과 password가 일치하는지 검사합니다.
검사를 완료하고 username과 password가 일치해서 사용자가 있다면 me라는 변수에 사용자를 넣어줍니다.
if me is not None:
auth.login(request, me)
return HttpResponse(me.username)
else:
return redirect('/sign-in')
if me is not None: <- 부분은 만약 사용자가 비어 있지 않다면 이라는 뜻 입니다.
사용자가 비어 있지 않다면 auth.login을 하고 내 정보를 넣어줍니다.
아니라면 로그인 페이지로 이동합니다.
def home(request):
user = request.user.is_authenticated
if user:
return redirect('/tweet')
else:
return redirect('/sign-in')
유저가 로그인이 되어 있으면 /tweet이라는 화면으로 이동합니다.
아니라면 로그인 화면으로 이동합니다.
{% if not user.is_authenticated %}
만약 로그인이 되어 있지 않다면 라는 뜻 입니다. 로그인이 안되어 있다면 우측 상단에 로그인 회원가입 문구가 뜹니다.
{% else %}
{{ user.username }} 님 반갑습니다!
{% endif %}
로그인이 되어 있다면 우측 상단에 로그인 회원가입 대신에 {{ user.username }} 님 반갑습니다! 라고 뜹니다.
{{ user.username }}안에는 로그인한 사용자의 이름을 가져옵니다.
@login_required
def logout(request):
auth.logout(request)
return redirect('/')
@login_required은 로그인 되어있어야지 이 코드가 실행 된다는 뜻 입니다.
해당 코드를 사용하려면 맨 위에 부분에 from django.contrib.auth.decorators import login_required
를 작성해줘야 합니다.
def logout(request):
auth.logout(request)
return redirect('/')
사용자가 있는지 없는지를 확인하고 있다면 로그인 후 화면으로 보내주고, 없다면 로그인 페이지로 보내줍니다.
강의를 배우면서 엄청나게 느꼈습니다.