본문 바로가기
○ WEB/21.02 CodeLion_Django Web

[장고 실전3] 4. 커뮤니티 : 로그인, 로그아웃

by 0ver-grow 2021. 4. 1.
반응형

로그인/로그아웃

계정관리 위한 앱 설치

$ python manage.py startapp accounts

 

[proejct] settings.py

 

로그인 기능 추가하기

 

[accounts] login.html 
[accounts] login.html : static폴더와 연결 후 js,css파일 위치 수정하기
[project] urls.py

 

 

 

[commuapp] base.html : 내용 수정 1
[commuapp] base.html : 내용 수정 2
[accounts] views.py : def login 1. 형태만 갖추기
[accounts] login.html : 1차 수정
[accounts] login.html : 2차 수정

 

※ POST 방식은 {% csrf_token %} 보안 설정이 무조건 되어있어야 한다.

 

 

[accounts] views.py : def login 2. 상세 기능 구현하기

 

from django.shortcuts import render, redirect
from django.contrib import auth # login,out을 위해 필수

def login(request) : 
    # request == POST
    # Login
    if request.method == "POST" : 
        username = request.POST["username"]
        password = request.POST["password"]
        user = auth.authenticate(request, username=username, password=password)
    
        # 실제 DB에 있는 회원이라면 로그인 진행
        if user is not None : 
            auth.login(request, user)
            return redirect('home')
        # 회원이 아니라면
        else :
            return render(request, 'bad_login.html')

    # request == GET
    else : 
        return render(request, 'login.html')
    # login html 띄우기

 

[accounts] bad_login.html : 로그인 안됐을 때의 화면

 

로그아웃 기능 추가하기

 

[commuapp] base.html : 로그아웃 링크 넣기

 

def logout(request) : 
    auth.logout(request)
    return redirect('home')

 

로그인 한 뒤, 로그아웃 버튼을 누르면
미리 지정된 팝업창이 나타난다. logout버튼 클릭시 동작할 수 있도록 수정하자
[commuapp] base.html

 

화면에 로그인 된 유저들을 띄워보자

 

[commuapp] base.html : 로그인, 로그아웃시 표시화면

 

<!-- 현재 로그인한 유저라면 유저 네임 띄우기-->
{% if user.is_authenticated  %}
<span class="mr-2 d-none d-lg-inline text-gray-600 small">{{user.username}}</span>
{% else %}
<span class="mr-2 d-none d-lg-inline text-gray-600 small">Login Plz</span>
{% endif %}
<img class="img-profile rounded-circle"
 src="{% static 'img/undraw_profile.svg' %}">

 

로그인 시 아이디가 표시됨

 

 

 

 

 

 

 

 

반응형