Python/python 클론코딩
인스타그램 클론코딩 (로그인, 로그아웃)
SeongWon
2020. 2. 26. 19:59
반응형
1. 로그인
Instagram - login.html
<form class="mt-3" method="post" action='{% url "accounts:login" %}'>{% csrf_token %}
<div class="form-group">
<input type="text" class="form-control" id="user_id" name="user_id" placeholder="사용자 이름">
</div>
<div class="form-group">
<input type="password" class="form-control" id="user_pw" name="user_pw" placeholder="비밀번호">
</div>
<button type="submit" class="btn btn-primary" onclick="">로그인</button>
</form>
Instagram - LoginView.py
def LoginView(request):
if request.method == "GET":
return render(request, 'login.html')
elif request.method == "POST":
user_id= request.POST.get('user_id')
user_pw= request.POST.get('user_pw')
salt, hashed_pw = hashing_password(user_pw)
cursor = connection.cursor()
strSql = "SELECT instagram.user.user_id"
strSql += " FROM instagram.user"
strSql += " WHERE user_id = (%s)"
result = cursor.execute(strSql, (user_id,))
datas = cursor.fetchall()
connection.commit()
connection.close()
if len(datas) == 0:
connection.rollback()
print("로그인 실패")
messages.error(request, '아이디 혹은 비밀번호를 확인해주세요.')
return redirect('/login')
elif len(datas) !=0:
cursor = connection.cursor()
pw_strSql = "SELECT instagram.user.user_pw, instagram.user.salt"
pw_strSql += " FROM instagram.user"
pw_strSql += " WHERE user_id = (%s)"
pw_result = cursor.execute(pw_strSql, (user_id,))
pw_datas = cursor.fetchall()
log_pw = log_password(user_pw, pw_datas[0][1])
log_pw_strSql = "SELECT instagram.user.user_pw"
log_pw_strSql += " FROM instagram.user"
log_pw_strSql += " WHERE user_pw = (%s)"
log_pw_result = cursor.execute(log_pw_strSql, (log_pw,))
log_pw_datas = cursor.fetchall()
connection.commit()
connection.close()
if len(log_pw_datas) == 0:
connection.rollback()
print("로그인 실패")
messages.error(request, '아이디 혹은 비밀번호를 확인해주세요.')
return redirect('/login')
elif len(log_pw_datas) !=0:
request.session['user_id'] = user_id
return redirect('/')
LoginView에 대한 두가지 request 처리
- request.method == 'GET' : request 메소드가 get일 경우 회원가입 페이지를 rendering
- request.method == 'POST' : requrest 메소드가 post일 경우 위의 html form에서 post된 데이터를 name으로 넘겨받아 처리
완성된 로그인 페이지
2. 로그아웃
Instagram - LogoutView.py
def Logout(request):
logout(request)
return redirect('accounts:login')
로그아웃이 정상정으로 이루어지면 모든 세션이 로그아웃 되면서 로그인 페이지로 redirect하게 된다.
▼ ▼ ▼
반응형