Knowledge Map

플라스크 + angularjs 를 이용한 회원가입 간략한 흐름 본문

PYTHON/Flask

플라스크 + angularjs 를 이용한 회원가입 간략한 흐름

2016. 3. 31. 17:32

플라스크.. 문서봐도 솔직히 잘 알수가 없어서 그냥 맨땅에 헤딩한다는 느낌으로 그냥 API손대기 시작했는데 진자 헷갈렸다.

다행히 성공을 하게 되어서 그 흐름을 기록한다. (angularjs + flask 조합이다.)



회원가입


회원가입.html 파일에서 <form><input ng-model="sign.name">이름, 이메일</input></form> 등을 입력한다.


ng-model로 지정된 값으로 해당 값이 value로 받게 된다.



이때의 sign.name은 angular에서의 $scope값이다.

따라서 해당 페이지에서 받는 컨트롤러인 signCtrl에서 처리된다.


signCtrl에서 

$scope.sign = {

name:{field:name, value:null},

pw:{field:pw, value:null}

};


이렇게 $scope.sign.name을 설정 및 초기화를 시켜준다.



입력하자마자 바로 signCtrl에서 유효성 체크 및 입력 유무에 따른 체크가 가능하다.

ng-~~~를 이용한 체크와 ng-model로 변수 부여를 하고 그걸로 자바스크립트처럼 js파일로가져와서 체크도 가능하다.


이렇게 유효성 체크를 다해주고 나서

하단의 sumit버튼을 클릭하게 되면 거기에 적용되어 있는 sumit()함수로 가게 된다.(이것도 signCtrl에 있다.)



signCtrl에서 

$scope.submit = function(){

var arg = {}; //이것은 DB로 넘기기 위해서 해당 값을 저장하기 위한 변수이다.


arg[$scope.sign.name.field] = $scope.sign.name.value;

arg[$scope.sign.pw.field] = $scope.sign.pw.value;


Manage.save(arg);

$location.path('/login')

}



이렇게 하면 다른 파일인 Manage.js파일이 연관을 가지게 된다. 

Manage에서는 factory의 Manage가 제출할 API 주소를 보내준다. 

env..js 파일에서는 DB와 연결될 IP주소와 포트를 제공한다. 


gogo.js와 env.js를 지나가게 되면 드디어 파이썬-플라스크의 파일로 데이터 값이 넘어가게 된다.


파이썬에서 가장 필요한거는 모델.py, 앱.py이다.

모델.py에서는 DB에 읽고 쓰는 것들에 대한 모든 변수 같은 것들을 지정해준다. 


일단 해당 DB에 해당하는 컬럼이 존재한다고 가정하에 계속 진행한다.



앱.py에서 

클래스 accountManageAPI(Resource):

def __init__(self):

self.API이름 = ~~

self.API = 주소~~

self.parser = reqparse.RequestParser()

그외 블라블라~~


self.parser.add_argument("name", type=str, location="json")                        //초기 값을 만들때 이 인수들을 만든다. 

self.parser.add_argument("pw, type=str, location="json")


super(accountManageAPI, self).__init__()


def post(self):                                                                    //당연히 회원 가입이면 post일 것이다.

input = self.parser.parse_args()                                                 //이걸로 넘어온 값을 받는다.

server = db.sessionquery(Server).filter_by(domain_lb=DOMAIN_LABEL).first()

user = Acounts()                                                            //모델.py에서의 클래스 이름

user.name = input['name']                                                  //Acount 클래스 내의 DB 전송 변수 이름

user.pw = input['pw']                                                      //모델.py에서 해당 변수 선언 안되어 있으면 아예 못씀

db.session.add(user)

db.session.commit()                                                        //DB추가 및 커밋.



모델.py


클래스 Account(db.Model):

__tablename__ = "member_tb"

pk = db.Column('pk', db.Integer, primary_key=True)

name = db.Column('name', db.String(20), unique=True) //유니크 속성 줄려고 예시로 들었다. 실제로는 이름에 유니크 안줌

pw = db.Column('pw',db.String(255)) //암호화 생략.. 왠만하면 암호화 해야됨.




아주 대충대충 하게 둘러보았는데. 이렇게 하면 이제 DB에 넘어가게 된다.

암호화, 팩토리, 서비스, 이런거 거의다 스킵을 해서 그냥 흐름만 본다는 생각으로 봐야 한다.

























'PYTHON > Flask' 카테고리의 다른 글

flask.g  (0) 2018.04.16
python3 flask pymysql 에서 한글 깨짐 문제  (0) 2017.12.11
Flask내의 CORS  (0) 2016.04.12
플라스트 + AngularJS 연결점  (0) 2016.04.12
파이썬 프레임워크 플라스크 -2  (0) 2016.03.24
Comments