오늘은 입학시험을 간단하게 통과하고 개인적으로 local에서 로그인 페이지를 구현해보라는 과제를 수행했다. 로그인 단계에서 반복문을 구성하는 과정에서 시간이 꽤 많이 걸렸다. 엄청 간단한건데 오래걸려서 자괴감이 좀 들었지만 그래도 스스로 생각해서 해내 뿌듯했다. 해결과정을 til로 쓰겠다.
문제점 : 로그인 페이지와 회원가입 페이지로 구성했는데 홈이 로그인 페이지고 회원가입 버튼에 건 회원가입 페이지 링크가 안되는 간단한 문제가 있었다.
시도 : 처음엔 회원가입 버튼에 onclick으로 accounts.html에 링크를 달았으나 실패.
검색해보니 html에서 ./를 쓰면 현재경로라고 인식 된다고 해서 ./accounts.html로 시도해봤으나 또 실패.
해결책 : 애초에 클라이언트 파일이 아니라 파이썬 서버 app.py파일에서 해결했어야 하는 문제였다.
@app.route('/accounts')
def accounts():
return render_template('accounts.html')
으로 루트를 /accounts로 만들고 html로 가서 버튼 onclick에 /accounts로 링크를 걸어주니 해결되었다.
def login_IDPW():
loginid_receive = request.form['loginid_give']
loginpw_receive = request.form['loginpw_give']
all_accounts = list(db.accounts.find({}, {'_id': False}))
for user in all_accounts:
if (str(loginid_receive) == str(user['id']) and int(loginpw_receive) == int(user['pw'])):
return jsonify({'msg': '로그인 완료!'})
else:
return jsonify({'msg': '로그인에 실패하였습니다.'})
이렇게 작성했던 코드를 복사해 테스트해보니 로그인 실패가 계속 반복되면서 뜨기때문에 실패했었다.
파이썬 반복문은 익숙치 않아 검색을 통해 파이썬 반복문 제어
pass break continue를 배워서 써먹어 봤으니 실패했다.
while 반복문으로 i를 세워 시도해 봤으나 익숙치 않아 실패했다.
저 반복문 사이에 i=0 을 세워놓고 횟수를 부여해 반복문이 유한하게 돌아가면 될 것 같아 시도해 보았다.
def login_IDPW():
loginid_receive = request.form['loginid_give']
loginpw_receive = request.form['loginpw_give']
all_accounts = list(db.accounts.find({}, {'_id': False}))
i = 0
for user in all_accounts:
if (str(loginid_receive) == str(user['id']) and int(loginpw_receive) == int(user['pw'])):
return jsonify({'msg': '로그인 완료!'})
else:
i += 1
if i == len(all_accounts):
return jsonify({'msg': '로그인에 실패하였습니다.'})
진짜 쉽고 별거 아니었는데 고민을 이상한쪽으로 해서 시간만 잡아먹었다.
반복문을 유한하게 돌아가게 변수 설정을 잘 해두는 방법을 더 익혀야겠다.