오늘은 입학시험을 간단하게 통과하고 개인적으로 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': '로그인에 실패하였습니다.'})
진짜 쉽고 별거 아니었는데 고민을 이상한쪽으로 해서 시간만 잡아먹었다.
반복문을 유한하게 돌아가게 변수 설정을 잘 해두는 방법을 더 익혀야겠다.