오도원입니다.

건강과 행복을 위하여

PNU DSC/Solution Challenge

Flask 08. 회원관리 - Controller

오도원공육사 2020. 3. 9. 16:44
반응형

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