패스트캠퍼스 파이썬 웹개발 올인원 패키지 후기(32)
파이썬 웹개발 올인원 패키지 32 일차 후기 겸 학습기록 입니다.
로그인 - 로그인 만들기 - 1

login.html
<html>
<head>
<!-- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> -->
<link rel="stylesheet" href="/static/bootstrap.min.css" />
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
</head>
<body>
<div class="container">
<div class="row mt-5">
<div class="col-12 text-center">
<h1>회원가입</h1>
</div>
</div>
<div class="row mt-5">
<div class="col-12">
{{ error }}
</div>
</div>
<div class="row mt-5">
<div class="col-12">
<form method="POST" action=".">
{% csrf_token %}
<div class="form-group">
<label for="username">사용자 이름</label>
<input type="text" class="form-control" id="username" placeholder='사용자이름' name="username">
</div>
<div class="form-group">
<label for="password">비밀번호</label>
<input type="password" class="form-control" id="password" placeholder="비밀번호" name="password">
</div>
<button type="submit" class="btn btn-primary">로그인</button>
</form>
</div>
</div>
</div>
</body>
</html>
views.py
from django.http import HttpResponse
from django.shortcuts import render
from django.contrib.auth.hashers import make_password, check_password
from .models import Fcuser
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
elif request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
res_data = {}
if not (username and password):
res_data['error'] = '모든 값을 입력하세요.'
else:
fcuser = Fcuser.objects.get(username=username)
if check_password(password, fcuser.password):
# 로그인 처리
pass
else:
# 로그인 실패 처리
res_data['error'] = '비밀번호가 틀렸습니다.'
return render(request, 'login.html', res_data)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register),
path('login/', views.login)
]
로그인 - 로그인 만들기 - 2

views.py
from django.http import HttpResponse
from django.shortcuts import render, redirect
from django.contrib.auth.hashers import make_password, check_password
from .models import Fcuser
def home(request):
user_id = request.session.get('user')
if user_id:
fcuser = Fcuser.objects.get(id=user_id)
return HttpResponse(fcuser.username)
return HttpResponse('Home!')
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
elif request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
res_data = {}
if not (username and password):
res_data['error'] = '모든 값을 입력하세요.'
else:
fcuser = Fcuser.objects.get(username=username)
if check_password(password, fcuser.password):
# 로그인 처리
request.session['user'] = fcuser.id
return redirect('/')
else:
# 로그인 실패 처리
res_data['error'] = '비밀번호가 틀렸습니다.'
return render(request, 'login.html', res_data)
urls.py
from django.contrib import admin
from django.urls import path, include
from fcuser.views import home
urlpatterns = [
path('admin/', admin.site.urls),
path('fcuser/', include('fcuser.urls')),
path('', home),
]
로그인 - 세션 원리 복습과 활용

브라우저에서 세션 정보를 저장하기 위해 사용하는 것은 쿠키(Cookie)
Chrmoe > 개발자 도구(F12) > Application Tab > Cookies > site명 에서 확인 가능
세션 id로 서버에서는 클라이언트를 식별
django에서는
request.session 으로 식별
logout 기능 구현
views.py
def logout(request):
if request.session.get('user'):
del request.session['user']
return redirect('/')
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register),
path('login/', views.login),
path('logout/', views.logout),
]
패스트캠퍼스 파이썬 인강 자세한 내용은 아래 링크를 참고해 주세요!
'Django Basics' 카테고리의 다른 글
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 34 회차 미션 (0) | 2020.06.27 |
|---|---|
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 33 회차 미션 (0) | 2020.06.26 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 31 회차 미션 (0) | 2020.06.24 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 30 회차 미션 (1) | 2020.06.23 |
| [패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 29 회차 미션 (0) | 2020.06.22 |