파이썬(Python) Flask - 로그인 및 Session, DB
오늘은 블로그를 통해서 가장 많은 요청을 받은 내용 중에 Flask 프레임웍의 Login 및 Session 처리에
관한 내용을 포스팅 하겠습니다.
아울러, DATABASE 연결을 통해서 기본적으로 회원가입 기능을 추가 후 관련 정보를 간단하게 Insert 및
조회(Retrieve) 기능을 추가 해서 사이트의 기초 기반을 이루는 간단한 기능을 구현하겠습니다.
Flask는 매우 경량화된 웹 프레임워크로 요즘에는 주로 머신러닝 및 딥러닝 학습 결과로 추출 한 Model
서비스를 위한 RestAPI Server로도 많은 활용이 되고 있습니다.
자유도가 높은 대신 필요한 패키지들은 각각 모듈(Module)화가 되어 있어서 별도로 설치해서 사용 할 수
있습니다. 전사 프레임워크인 Django와 대비되는 특징이라 볼 수 있습니다.
문서 맨 하단에 예제 소스를 항상 첨부해드립니다. 글로 이해가 안되시면 소스코드를 직접 다운로드 받으셔서
차근차근 분석해보시면 쉽게 이해하실 수 있습니다.
그러면 문서 하단에서 간단하게 예제를 작성해보겠습니다.
Flask 관련 포스팅 : Flask 관련
파이썬(Python) Flask - Login 예제 소스 코드
플라스크 Login, DB 기능 구현을 위해 아래 소스코드는 기본적으로 회원 가입 - 로그인 - 로그아웃 에 맞는
URL Mapping의 컨트롤러 역할을 하고 있는 app.py 예제 소스 입니다.
각각의 HTML 파일은 jinja2 문법을 사용해서 렌더링 하고 있습니다. 자세한 내용은 첨부파일을 다운로드 후
소스 코드 내용을 확인하세요.
참고로 MySQL 종류의 관계형 DB 또는 NoSQL 제품군을 별도로 사용하기 위해서는 해당 드라이버에 맞는
패키지를 설치해주시면 됩니다.
기본 패키지 설치(필수)
pip install flaskpip install Flask-SQLAlchemy
소스 코드
app.py
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 """Flask Login Example and instagram fallowing find"""from flask import Flask, url_for, render_template, request, redirect, sessionfrom flask_sqlalchemy import SQLAlchemyfrom instagram import getfollowedby, getname app = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'db = SQLAlchemy(app) class User(db.Model): """ Create user table""" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(80)) def __init__(self, username, password): self.username = username self.password = password @app.route('/', methods=['GET', 'POST'])def home(): """ Session control""" if not session.get('logged_in'): return render_template('index.html') else: if request.method == 'POST': username = getname(request.form['username']) return render_template('index.html', data=getfollowedby(username)) return render_template('index.html') @app.route('/login', methods=['GET', 'POST'])def login(): """Login Form""" if request.method == 'GET': return render_template('login.html') else: name = request.form['username'] passw = request.form['password'] try: data = User.query.filter_by(username=name, password=passw).first() if data is not None: session['logged_in'] = True return redirect(url_for('home')) else: return 'Dont Login' except: return "Dont Login" @app.route('/register/', methods=['GET', 'POST'])def register(): """Register Form""" if request.method == 'POST': new_user = User(username=request.form['username'], password=request.form['password']) db.session.add(new_user) db.session.commit() return render_template('login.html') return render_template('register.html') @app.route("/logout")def logout(): """Logout Form""" session['logged_in'] = False return redirect(url_for('home')) if __name__ == '__main__': app.debug = True db.create_all() app.secret_key = "123" app.run(host='0.0.0.0') cs
- 6~8번 라인 : Flask 초기화 및 DB 설정(Path, Driver)
- 10번 라인 : 회원 정보(User Info)를 Class 형태로 선언 후 Model로 사용
- 20번 라인 : 메인 페이지(index.html) 처리, 로그인 및 세션 처리
- 51번 라인 : 회원 가입(register.html) 처리 및 Redirect(login.html)- 62번 라인 : 로그아웃(Logout) 처리
- 70~74번 라인 : Debug 모드 활성화 및 Server 시작
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | """Flask Login Example and instagram fallowing find""" from flask import Flask, url_for, render_template, request, redirect, session from flask_sqlalchemy import SQLAlchemy from instagram import getfollowedby, getname app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' db = SQLAlchemy(app) class User(db.Model): """ Create user table""" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(80)) def __init__(self, username, password): self.username = username self.password = password @app.route('/', methods=['GET', 'POST']) def home(): """ Session control""" if not session.get('logged_in'): return render_template('index.html') else: if request.method == 'POST': username = getname(request.form['username']) return render_template('index.html', data=getfollowedby(username)) return render_template('index.html') @app.route('/login', methods=['GET', 'POST']) def login(): """Login Form""" if request.method == 'GET': return render_template('login.html') else: name = request.form['username'] passw = request.form['password'] try: data = User.query.filter_by(username=name, password=passw).first() if data is not None: session['logged_in'] = True return redirect(url_for('home')) else: return 'Dont Login' except: return "Dont Login" @app.route('/register/', methods=['GET', 'POST']) def register(): """Register Form""" if request.method == 'POST': new_user = User(username=request.form['username'], password=request.form['password']) db.session.add(new_user) db.session.commit() return render_template('login.html') return render_template('register.html') @app.route("/logout") def logout(): """Logout Form""" session['logged_in'] = False return redirect(url_for('home')) if __name__ == '__main__': app.debug = True db.create_all() app.secret_key = "123" app.run(host='0.0.0.0') | cs |
- 6~8번 라인 : Flask 초기화 및 DB 설정(Path, Driver)
- 10번 라인 : 회원 정보(User Info)를 Class 형태로 선언 후 Model로 사용
- 20번 라인 : 메인 페이지(index.html) 처리, 로그인 및 세션 처리
- 51번 라인 : 회원 가입(register.html) 처리 및 Redirect(login.html)
- 70~74번 라인 : Debug 모드 활성화 및 Server 시작
Flask Session의 추가적인 상세 설명은 이 곳을 참고해 주세요.
Flask Session의 추가적인 상세 설명은 이 곳을 참고해 주세요.
파이썬(Python) Flask - Login 실행 화면
아래 이미지로 기본 패키지 설치 및 예제 소스의 기능 동작을 전반적으로 확인하실 수 있습니다.
실행 화면 - 패키지 설치
실행 화면 - 실제 기능 확인
Flask 공식 Reference : Flask 관련
Flask 공식 Reference : Flask 관련
마무리
이번 포스팅에서는 플라스크 프레임워크를 활용해서 간단한 Login, DB 작업, Session 처리 관련 등의
테스트를 진행했습니다.
웹 프레임워크를 지원하는 다양한 프로그래밍 언어가 있지만, 특히 Flask는 파이썬 문법을 기반으로 매우
빠르게 경량형 웹 어플리케이션을 작성하는데 많은 장점을 가지고 있는 것 같습니다.
꼭 첨부된 소스코드를 다운받아서 반드시 한 번 실행 해보시는 것을 추천드립니다.
다음 시간에도 플라스크(Flask)의 다양한 기능 및 도움이 되는 기능을 포스팅 하도록 하겠습니다.
소스코드 다운로드 :
Flask-Login-Example.zip
'웹 백엔드 > Django & Flask' 카테고리의 다른 글
Django(장고) - 로깅(Logging) 설정 및 DB SQL 쿼리(Query) 확인 (0) | 2019.02.14 |
---|---|
Flask(플라스크) - 파이썬 Flask 기본 템플릿(template) 예제 및 소스파일 (1) | 2018.06.22 |
Flask(플라스크) - 파이썬 Flask 파일 업로드(file upload) 예제 및 소스파일 (7) | 2018.06.20 |
Flask(플라스크) - 파이썬 Flask RestFul API 서버 작성 예제 및 다운로드 (0) | 2018.01.21 |
Django(장고) - 로깅(Logging) 설정 및 로그(Log)파일로 저장 (0) | 2017.10.09 |
파이썬(Python) Flask - 로그인 및 Session, DB
오늘은 블로그를 통해서 가장 많은 요청을 받은 내용 중에 Flask 프레임웍의 Login 및 Session 처리에
관한 내용을 포스팅 하겠습니다.
아울러, DATABASE 연결을 통해서 기본적으로 회원가입 기능을 추가 후 관련 정보를 간단하게 Insert 및
조회(Retrieve) 기능을 추가 해서 사이트의 기초 기반을 이루는 간단한 기능을 구현하겠습니다.
Flask는 매우 경량화된 웹 프레임워크로 요즘에는 주로 머신러닝 및 딥러닝 학습 결과로 추출 한 Model
서비스를 위한 RestAPI Server로도 많은 활용이 되고 있습니다.
자유도가 높은 대신 필요한 패키지들은 각각 모듈(Module)화가 되어 있어서 별도로 설치해서 사용 할 수
있습니다. 전사 프레임워크인 Django와 대비되는 특징이라 볼 수 있습니다.
문서 맨 하단에 예제 소스를 항상 첨부해드립니다. 글로 이해가 안되시면 소스코드를 직접 다운로드 받으셔서
차근차근 분석해보시면 쉽게 이해하실 수 있습니다.
그러면 문서 하단에서 간단하게 예제를 작성해보겠습니다.
Flask 관련 포스팅 : Flask 관련
파이썬(Python) Flask - Login 예제 소스 코드
플라스크 Login, DB 기능 구현을 위해 아래 소스코드는 기본적으로 회원 가입 - 로그인 - 로그아웃 에 맞는
URL Mapping의 컨트롤러 역할을 하고 있는 app.py 예제 소스 입니다.
각각의 HTML 파일은 jinja2 문법을 사용해서 렌더링 하고 있습니다. 자세한 내용은 첨부파일을 다운로드 후
소스 코드 내용을 확인하세요.
참고로 MySQL 종류의 관계형 DB 또는 NoSQL 제품군을 별도로 사용하기 위해서는 해당 드라이버에 맞는
패키지를 설치해주시면 됩니다.
기본 패키지 설치(필수)
pip install flaskpip install Flask-SQLAlchemy
소스 코드
app.py
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 """Flask Login Example and instagram fallowing find"""from flask import Flask, url_for, render_template, request, redirect, sessionfrom flask_sqlalchemy import SQLAlchemyfrom instagram import getfollowedby, getname app = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'db = SQLAlchemy(app) class User(db.Model): """ Create user table""" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(80)) def __init__(self, username, password): self.username = username self.password = password @app.route('/', methods=['GET', 'POST'])def home(): """ Session control""" if not session.get('logged_in'): return render_template('index.html') else: if request.method == 'POST': username = getname(request.form['username']) return render_template('index.html', data=getfollowedby(username)) return render_template('index.html') @app.route('/login', methods=['GET', 'POST'])def login(): """Login Form""" if request.method == 'GET': return render_template('login.html') else: name = request.form['username'] passw = request.form['password'] try: data = User.query.filter_by(username=name, password=passw).first() if data is not None: session['logged_in'] = True return redirect(url_for('home')) else: return 'Dont Login' except: return "Dont Login" @app.route('/register/', methods=['GET', 'POST'])def register(): """Register Form""" if request.method == 'POST': new_user = User(username=request.form['username'], password=request.form['password']) db.session.add(new_user) db.session.commit() return render_template('login.html') return render_template('register.html') @app.route("/logout")def logout(): """Logout Form""" session['logged_in'] = False return redirect(url_for('home')) if __name__ == '__main__': app.debug = True db.create_all() app.secret_key = "123" app.run(host='0.0.0.0') cs
- 6~8번 라인 : Flask 초기화 및 DB 설정(Path, Driver)
- 10번 라인 : 회원 정보(User Info)를 Class 형태로 선언 후 Model로 사용
- 20번 라인 : 메인 페이지(index.html) 처리, 로그인 및 세션 처리
- 51번 라인 : 회원 가입(register.html) 처리 및 Redirect(login.html)- 62번 라인 : 로그아웃(Logout) 처리
- 70~74번 라인 : Debug 모드 활성화 및 Server 시작
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | """Flask Login Example and instagram fallowing find""" from flask import Flask, url_for, render_template, request, redirect, session from flask_sqlalchemy import SQLAlchemy from instagram import getfollowedby, getname app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' db = SQLAlchemy(app) class User(db.Model): """ Create user table""" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) password = db.Column(db.String(80)) def __init__(self, username, password): self.username = username self.password = password @app.route('/', methods=['GET', 'POST']) def home(): """ Session control""" if not session.get('logged_in'): return render_template('index.html') else: if request.method == 'POST': username = getname(request.form['username']) return render_template('index.html', data=getfollowedby(username)) return render_template('index.html') @app.route('/login', methods=['GET', 'POST']) def login(): """Login Form""" if request.method == 'GET': return render_template('login.html') else: name = request.form['username'] passw = request.form['password'] try: data = User.query.filter_by(username=name, password=passw).first() if data is not None: session['logged_in'] = True return redirect(url_for('home')) else: return 'Dont Login' except: return "Dont Login" @app.route('/register/', methods=['GET', 'POST']) def register(): """Register Form""" if request.method == 'POST': new_user = User(username=request.form['username'], password=request.form['password']) db.session.add(new_user) db.session.commit() return render_template('login.html') return render_template('register.html') @app.route("/logout") def logout(): """Logout Form""" session['logged_in'] = False return redirect(url_for('home')) if __name__ == '__main__': app.debug = True db.create_all() app.secret_key = "123" app.run(host='0.0.0.0') | cs |
- 6~8번 라인 : Flask 초기화 및 DB 설정(Path, Driver)
- 10번 라인 : 회원 정보(User Info)를 Class 형태로 선언 후 Model로 사용
- 20번 라인 : 메인 페이지(index.html) 처리, 로그인 및 세션 처리
- 51번 라인 : 회원 가입(register.html) 처리 및 Redirect(login.html)
- 70~74번 라인 : Debug 모드 활성화 및 Server 시작
Flask Session의 추가적인 상세 설명은 이 곳을 참고해 주세요.
Flask Session의 추가적인 상세 설명은 이 곳을 참고해 주세요.
파이썬(Python) Flask - Login 실행 화면
아래 이미지로 기본 패키지 설치 및 예제 소스의 기능 동작을 전반적으로 확인하실 수 있습니다.
실행 화면 - 패키지 설치
실행 화면 - 실제 기능 확인
Flask 공식 Reference : Flask 관련
Flask 공식 Reference : Flask 관련
마무리
이번 포스팅에서는 플라스크 프레임워크를 활용해서 간단한 Login, DB 작업, Session 처리 관련 등의
테스트를 진행했습니다.
웹 프레임워크를 지원하는 다양한 프로그래밍 언어가 있지만, 특히 Flask는 파이썬 문법을 기반으로 매우
빠르게 경량형 웹 어플리케이션을 작성하는데 많은 장점을 가지고 있는 것 같습니다.
꼭 첨부된 소스코드를 다운받아서 반드시 한 번 실행 해보시는 것을 추천드립니다.
다음 시간에도 플라스크(Flask)의 다양한 기능 및 도움이 되는 기능을 포스팅 하도록 하겠습니다.
소스코드 다운로드 :
Flask-Login-Example.zip
'웹 백엔드 > Django & Flask' 카테고리의 다른 글
Django(장고) - 로깅(Logging) 설정 및 DB SQL 쿼리(Query) 확인 (0) | 2019.02.14 |
---|---|
Flask(플라스크) - 파이썬 Flask 기본 템플릿(template) 예제 및 소스파일 (1) | 2018.06.22 |
Flask(플라스크) - 파이썬 Flask 파일 업로드(file upload) 예제 및 소스파일 (7) | 2018.06.20 |
Flask(플라스크) - 파이썬 Flask RestFul API 서버 작성 예제 및 다운로드 (0) | 2018.01.21 |
Django(장고) - 로깅(Logging) 설정 및 로그(Log)파일로 저장 (0) | 2017.10.09 |