앞 장의 Flask기본을 활용한 기본 예제이다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Flask 인스턴스 생성 | |
from flask import Flask | |
from flask import render_template | |
from flask import request, session, redirect, url_for, escape | |
app = Flask (__name__) | |
# 위선언된 app로 request경로를 처리하는 함수 @app.route("경로") | |
# response는 return값으로 처리한다. | |
@app.route('/') | |
def index(): | |
return "<h1> Hello PyStock ! </h1>" | |
# 동적 라우트 app.route의 경로를 <>로 받을경우 함수의 인자로 받을 수 있다. | |
@app.route('/nos/<code>') | |
def item(code): | |
return "<h1> %s </h1>" % code | |
# templates 구현 ( 템플릿으로 불러올 파일은 templates디렉토리 안에 있어야 한다. ) | |
@app.route('/hello/<name>') | |
def hello(name): | |
msg = request.values["msg"] | |
return render_template('member/Member_Join_001.html', name=name, msg=msg) | |
# query String 가져오기 | |
@app.route("/msg") | |
def reverse(): | |
message = request.values["message"] | |
return "".join(reversed(message)) | |
# 세션제어 | |
app.secret_key = '비미르키' | |
# 세션을 제어하기 위해서는 비밀키를 우선 설정해 주어야 한다. app.secret_key = '' | |
@app.route('/log') | |
def login_index(): | |
if 'username' in session: | |
return 'Logged in as %s' % escape(session['username']) | |
return 'You are not logged in' | |
@app.route('/login', methods=['GET', 'POST']) | |
def login(): | |
if request.method == 'POST': | |
session['username'] = request.form['username'] # session['key'] = 으로 세션객체에 저장가능 | |
#request.values[''] 로도 가능 | |
return redirect(url_for('login_index')) # url_for('함수명') = 해당함수의 접근 url경로 반환 | |
# redirect('경로') 리다이렉트 | |
return ''' | |
<form action="" method="post"> | |
<p><input type=text name=username> | |
<p><input type=submit value=Login> | |
</form> | |
''' | |
@app.route('/logout') | |
def logout(): | |
# remove the username from the session if its there | |
session.pop('username', None) # 세션객체 pop | |
return redirect(url_for('index')) | |
if __name__ == "__main__": | |
app.run(debug=True) | |
# 콘솔에서 실행해야함 |