Django 코드 뜻 해석 정리하기

Frel·2022년 5월 30일
0

내일 배움 캠프

목록 보기
28/35

강의를 보면서 작성한 코드들의 뜻을 이해하기 위해서 해석하면서 하나씩 정리해보겠습니다.

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('/')
    
사용자가 있는지 없는지를 확인하고 있다면 로그인 후 화면으로 보내주고, 없다면 로그인 페이지로 보내줍니다.

후기

강의를 배우면서 엄청나게 느꼈습니다.

Django는 짱이다..

profile
자기개발을 해서 발전하는 미래의 개발자

0개의 댓글