반응형
Model과 View가 만들어졌으므로 이제 Controller를 구현해서 회원관리를 완성해보자.
@app.route('/register')
def register():
return render_template('register.html')
이 코드에 비즈니스 로직을 완성해야한다.
이제 회원가입의 두가지 경우가있다. GET요청과 POST요청이 있다. GET은 기존에 만들었던 페이지를 보여주는 것이고, POST요청은 등록을 눌렀을 때 데이터를 가지고 오는 것이다.
따라서, GET인 경우와 POST인 경우를 나눠서 코드를 작성해야한다.
우선 요청정보를 확인하기 위해서 flask에 request모듈을 import한다. request 객체를 통해 요청정보를 관리할 수 있다.
...
from flask import request
...
@app.route('/register', methods=['GET', 'POST'])
def register():
print(request.method)
...
메소드를 GET과 POST를 사용한다고 명시해야한다. default로 GET만 사용하므로 POST를 명시해줘야한다.
POST가 정상적으로 동작한다.
이제 본격적으로 작성해보자.
...
from flask import request
...
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'GET': # GET방식의 요청일 경우
return render_template('regitster.html)
else : # POST방식의 요청일 경우
# 회원정보 생성
userid = request.form.get('userid')
# request.form.get에 요청정보들이 저장되므로 이것을 통해 접근할 수 있다.
username = request.form.get('username')
password = request.form.get('password')
re_password = request.form.get('re-password')
# 모든 정보가 있는지와 비밀번호와 비밀번호 확인이 일치하는지 체크
if not (userid and username and password and re_password):
return render_template('register.html')
if password != re_password:
return render_template('register.html')
fcuser = Fcuser()
fcuser.userid = userid
fcuser.username = username
fcuser.password = password
# 회원 데이터베이스 추가
db.session.add(fcuser)
# 커밋(실제 데이터베이스 반영)
db.session.commit()
return redirect('/')
리팩토링
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
userid = request.form.get('userid')
username = request.form.get('username')
password = request.form.get('password')
re_password = request.form.get('re-password')
if (userid and username and password and re_password) and password == re_password:
fcuser = Fcuser()
fcuser.userid = userid
fcuser.username = username
fcuser.password = password
db.session.add(fcuser)
db.session.commit()
return redirect('/')
return render_template('register.html')
반응형
'PNU DSC > Solution Challenge' 카테고리의 다른 글
Flask 10. static 파일 관리하기 (0) | 2020.03.10 |
---|---|
Flask 09. Flask-WTF (0) | 2020.03.10 |
Flask 07. 회원관리 - View (bootstrap) (0) | 2020.03.09 |
Flask 06. 회원가입 - Model (0) | 2020.03.09 |
Flask 05. Jinja2 (0) | 2020.03.09 |