A Developing Developer
DAY 16. 2ed 팀 프로젝트 2일차, W 튜터님 API 특특강 본문
우선 현재시간 새벽 1시 31분
16일차 동안 제일 늦게까지 프로젝트를 진행했다.
오늘 목표인 로그인, 회원가입 기능 (대강) 완료가 생각보다 오래걸렸다.
완벽하지는 않아도 어느정도 구색은 갖춘거같아서 뿌듯하다.
오늘은 팀 프로젝트 2일차로 원래 스케줄은 풀로 팀 프로젝트를 진행하는 것인데, 저녁 먹고 W 튜터님께서 특별히 API 특강을 진행 해주셨다.
2시간 넘게 특강을 진행하셨는데, 열심히 강의해주신 만큼 흡수를 못해서 항상 아쉽다.
============================================================================================
- I-ONE 팀 프로젝트
- Flask 의 session 라이브러리
# main
@app.route('/')
def home():
if "usernm" in session:
return render_template('main.html', usernm = session.get("usernm"), login = True)
else:
return render_template('main.html', login = False)
usernm 변수에 로그인 할 때 혹은 회원가입 할 때 nm 컬럼의 값을 session에 저장해서 로그인 상태를 유지한다.
- 로그인
# login
@app.route('/users/login', methods = ['GET', 'POST'])
def login():
db = pymysql.connect(host = 'localhost', user = 'root', db = 'i_one', password = 'M@ansghkwo12', charset = 'utf8')
curs = db.cursor()
if request.method == 'POST':
uid = request.form['userId']
upw = request.form['password']
print(uid, upw)
curs.execute("SELECT * FROM t_user")
t_user_list = curs.fetchall()
print(t_user_list)
for t_user in t_user_list:
print(t_user)
if uid == t_user[1]:
if upw == t_user[2]:
session["usernm"] = t_user[3]
return redirect("/")
else:
return '<script>alert("비밀번호가 틀렸습니다."); document.location.href="login"; </script>'
return '<script>alert("아이디가 틀렸습니다."); document.location.href="login"; </script>'
db.commit()
db.close()
return render_template('login.html')
db를 연결하고 POST 방식일 경우 입력한 userId와 password 값을 회원가입에 Insert 했던 uid와 upw 값을 비교해서 모두 동일하면 session 에 nm 값을 입력하고 / (main.html) 페이지로 redirect, 비밀번호, 아이디 틀린 분기별로 <script> 를 활용하여 alert 및 login 페이지로 이동한다.
- 회원가입
# sign up, INSERT
@app.route('/users/signup', methods = ['POST'])
def insert_user():
db = pymysql.connect(host = 'localhost', user = 'root', db = 'i_one', password = 'M@ansghkwo12', charset = 'utf8')
curs = db.cursor()
if request.method == 'POST':
uid = request.form['userId']
upw = request.form['password']
nm = request.form['name']
gender = request.form['gender']
email = request.form["email"]
loc = request.form['location']
sql = """insert into t_user (uid, upw, nm, gender, email, location)
values (%s,%s,%s,%s,%s,%s)
"""
curs.execute(sql, (uid, upw, nm, gender, email, loc))
session["usernm"] = nm
db.commit()
db.close()
return redirect("/")
db 연결하고 POST 방식으로 input 각 값들을 SQL 문에 맞게 Insert 해준다.
이 때 회원가입시 로그인 된 효과를 주기위해서 session 에 nm 값을 대입해준다.
- 로그아웃
@app.route('/logout')
def logout():
session.pop("usernm")
return redirect("/")
로그인 유지 수단인 session 의 usernm 값을 pop 해준다.
- TODO
비밀번호 암호화, 로깅 데이터 확인 기능(err.log 파일 만들어서 에러 관리)
- W 튜터님 API 특특강
(솔직히 이해가 쏙쏙 되지는 않았다, 강의를 듣던 80 여명중 대부분도 나랑 비슷했을거라 믿는다)
Front End(FE) 와 Back End(BE) 를 분리하는 이유! :
(외부 API 데이터를 통해) 다양하게 활용하기 위해서
+ 모바일 시장이 커지면서 html을 해석할 수 없는 클라이언트 때문에 BE 와 FE 가 나눠지는데 가속화 영향
(현재 단계에서는) API 는 JSON 데이터를 주고 받는다.
API 명세시 단수가 아닌 복수를 사용하고 가능한 동사를 피해야한다.
(2시간 동안 반복해서 설명해주셨는데... 복습을 더 해야겠다.)
============================================================================================
TIL 다쓰니까 거의 2시네?
뿌듯한데 피곤하다ㅠㅠ
끝~
'내일배움캠프 4기 > TIL' 카테고리의 다른 글
DAY 18. 2ed 팀 프로젝트 4일차 (0) | 2022.12.07 |
---|---|
DAY 17. 2ed 팀 프로젝트 3일차 (0) | 2022.12.06 |
DAY 15. 2ed 팀 프로젝트 발제, K 튜터님 OSI 7계층 특강 (0) | 2022.12.02 |
DAY 14. H 튜터님 RESTful AIP 특강, J 튜터님 html, css, javascript 특강 (0) | 2022.12.01 |
DAY 13. K 튜터님 타임어택 1회차 해설, J 튜터님 DB 특강 (0) | 2022.11.30 |