2020. 2. 14. 21:11ㆍ해봤던것들
데이터베이스 사용
전적 검색 사이트의 회원가입, 로그인, 게시판, 유저 매칭, 전적 검색 여러 기능들을 구현하기 위해 데이터베이스를 사용했고 mongoDB를 사용했습니다. Flask를 사용했기 때문에 PHP구문 없이 데이터베이스를 활용할 수 있었습니다.
회원가입
페이지 상단의 회원가입 버튼을 누르면
아래와 같이 회원가입 모달이 페이지에 띄워집니다.
회원가입 모달에 이메일, 비밀번호를 입력하고 회원가입 버튼을 누르면
'POST' 형태로 Flask에 전달됩니다.
@app.route('/register_modal', methods=['POST', 'GET'])
def register():
if request.method == 'POST':
myuser = mongo.db.user_Info
existing_user = myuser.find_one({'email' : request.form['register_email']})
if existing_user is None:
hashpass = bcrypt.generate_password_hash(request.form['register_pw2'])
myuser.insert({'email' : request.form['register_email'], 'password' : hashpass})
flash('회원가입 성공!!')
return redirect(url_for('index'))
flash('이미 사용중인 이메일입니다.')
return redirect(url_for('index'))
return render_template('index.html')
만약 이메일이 mongoDB에 등록되어 있으면 이메일이면 '이미 사용중인 이메일입니다.'라는 플래시 메시지를 출력하고
그렇지 않으면 mongoDB에 이메일과 비밀번호를 등록합니다.
비밀번호는 bcrypt Hash함수를 사용하여 암호화된 상태로 데이터베이스에 저장됩니다.
-회원가입 실패
-회원가입 성공
-mongoDB에 등록된 이메일과 비밀번호
로그인
회원가입과 마찬가지로 로그인 버튼을 누르면 로그인 모달이 띄워지고
mongoDB의 데이터와 비교해 이메일과 비밀번호가 일치하면 '로그인 성공' 플래시 메시지를 출력하고
그렇지 않으면 '로그인 실패' 플레쉬를 출력합니다.
bcrypt Hash함수를 사용하여 암호화해줬기 때문에 마찬가지로 bcrypt Hash함수를 이용해 복호화 후 비밀번호를 비교합니다.
@app.route('/login_modal', methods=['POST'])
def login():
#if request.method == 'POST':
myuser = mongo.db.user_Info
login_user = myuser.find_one({'email' : request.form['login_email']})
if login_user:
pw_check = bcrypt.check_password_hash(login_user['password'], request.form['login_pw'])
if pw_check is True:
session['email'] = request.form['login_email']
flash('로그인 성공!')
return redirect(url_for('index'))
flash('이메일, 패스워드를 다시 확인해주세요.')
return redirect(url_for('index'))
flash('이메일, 패스워드를 다시 확인해주세요.')
return redirect(url_for('index'))
-로그인 성공
-로그인 실패
게시판
로그인에 성공하면 '나만의 팁', '유저 매칭' 버튼이 생기게 됩니다.
'나만의 팁' 버튼을 클릭하면 게시판으로 이동 할 수 있고 '글쓰기' 버튼을 눌러 정보를 입력할 수 있습니다.
입력된 내용은 mongoDB에 저장되며 게시판 글을 클릭해 확인 할 수 있고
유튜브 영상이 첨부된 경우 메인 페이지에서 확인이 가능합니다.
-게시판 글 등록
-게시글 확인
유저매칭
유저 매칭 게시판으로 이동하면 사용자가 등록한 유저 정보에 맞춰 유저를 매칭 합니다.
등록된 상태가 아니면 매칭 정보를 등록해달라는 메시지를 출력하고
등록이 되어있으면 등록한 사용자들의 정보를 보여줍니다.
변경사항이 있으면 다시 등록해 내 정보를 변경할 수 있습니다.
-변경 전
-변경 후
전적 검색
메인 페이지의 검색창에 리그 오브 레전드 닉네임을 입력하면 api를 이용해 최근 전적 20게임을 불러옵니다.
불러온 데이터를 기반으로 최근 경기 킬/데스/어시스트를 그래프로 표시하고
모스트 챔피언, 현재 리그 정보를 표시합니다.
라인 별 챔피언 추천
초기 계획은 티어 별 추천 챔피언을 제공할 계획이었지만 상당히 많은 양의 데이터를 필요로 해서 다른 사이트의 정보를 파싱 해오는 것으로 대체했습니다.
BeautifulSoup를 이용해 파싱 하고 수집한 데이터는 모달에 출력합니다.
Yeowoolee/LOL-API-Statistics
Create web pages that analyze and advise users through analysis - Yeowoolee/LOL-API-Statistics
github.com