MyPrograming
인스타그램 클론코딩 (회원가입) 본문
반응형
Instagram - signup.html
<form class="mt-3" method="post">{% csrf_token %}
<div class="form-group">
<input type="email" class="form-control" id="e_mail" name="e_mail" placeholder="이메일 주소">
</div>
<div class="form-group">
<input type="text" class="form-control" id="name" name="name" placeholder="성명">
</div>
<div class="form-group">
<input type="text" class="form-control" id="user_id" name="user_id" placeholder="사용자 ID">
</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 - RegisterView.py
def RegisterView(request):
if request.method == "GET":
return render(request, 'signup.html')
elif request.method == "POST":
email = request.POST.get("e_mail")
name = request.POST.get("name")
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('/register')
elif len(datas)==0:
cursor = connection.cursor()
insert_sql = "INSERT INTO instagram.user(e_mail, name, user_id, user_pw, salt)"
insert_sql += " VALUES ((%s), (%s), (%s), (%s), (%s))"
insert_result = cursor.execute(insert_sql, (email, name, user_id, hashed_pw, salt,))
insert_datas = cursor.fetchall()
connection.commit()
connection.close()
messages.success(request, '회원가입에 성공하셨습니다.')
return redirect('/login')
RegisterView에 대한 두가지 request 처리
- request.method == 'GET' : request 메소드가 get일 경우 회원가입 페이지를 rendering
- request.method == 'POST' : requrest 메소드가 post일 경우 위의 html form에서 post된 데이터를 name으로 넘겨받아 처리
- messages.success(request, '.... '): 사용자에게 정보를 전달하기 위해 사용하는 1회성의 메세지
Messages Framework
:쿠키 및 세션 기반의 1회성 메시지를 담는 용도
- 메시지를 하나의 HttpRequest 인스턴스에 임시로 저장하고 바로 다음 request에 표시됨
- 1회 노출되고 해당 페이지를 reload하면 사라짐
from django.contrib import messages
메시지에는 레벨이 존재합니다. 메시지 레벨을 사용하면 메시지를 유형별로 그룹화하여 뷰나 템플릿에서 다르게
필터링하거나 표시 할 수 있습니다. Django messages의 레벨은 다음과 같습니다.
- DEBUG: 개발 관련 메시지(default로 메시지를 남겨도 무시됨)
- INFO: 사용자를위한 정보 메시지
- SUCCESS
- WARNING
- ERROR
html에서 사용법
{% if messages %}
<div>
{% for message in messages %}
{{message.tags}}! {{message.message}}
{% endfor %}
</div>
{% endif %}
구축된 회원가입 페이지
회원가입 성공시의 메세지와 login 페이지로 redirect
반응형
'Python > python 클론코딩' 카테고리의 다른 글
(계속) Django Authentication 기능을 통한 정보 수정 (0) | 2020.04.02 |
---|---|
Django Authentication 기능을 통한 회원 가입 (0) | 2020.04.02 |
인스타그램 클론코딩 (로그인, 로그아웃) (0) | 2020.02.26 |
DKEA (간단 쇼핑몰) (0) | 2020.01.21 |
간단한 북스토어 서비스 (0) | 2020.01.07 |