python flask beautifulsoup4

Python : 2013. 10. 2. 13:57
반응형

도움이 됨

http://www.dorajistyle.pe.kr/2013/07/python-flask-extensions-tip.html


flask

Werkzeug 와 Jinja2 기반의 Python 용 마이크로 웹 프레임워크

WSGI 에 맞춰져 있음

복잡한 웹페이지가 아닌 간단한 웹 서비스나 RESTful API 를 만들기에는 최적의 솔루션


http://kswa.codingstar.net:14705/html/index.html


http://blog.thecircuitnerd.com/flask-login-tokens/


http://sparcs.kaist.ac.kr/seminar/attachment/whitegold-20130522-1.pdf


flask 설치


1. easy_install 로 설치하는 방법

python은 easy_install 이라는 모듈 관리툴을 제공한다.


easy_install 을 사용하려면 python-setuptools를 깔아야 한다.


$ sudo apt-get install python-setuptools


그다음에 flask를 설치한다.음


$ sudo easy_install flask


flask에서 로그인 처리를 도와주는 Flask-Login도 깔아준다.


$ sudo easy_install Flask-Login


xml이나 http 파싱할 때 쓰기 위해서 beautifulsoup 도 깔아준다.


$ sudo easy_install beautifulsoup4


설치가 끝났다.


2. pip install 로 설치하는 방법 (권장)


$sudo apt-get install python-pip


$pip install Flask


실행


아래와 같이 해주면 실행된다.




return이 html이라고 생각하면 된다.

포트를 변경하고 싶으면
app.run(port=8080) 이라고 하면 8080으로 열린다.

외부에서도 접근 가능하기 위해서 host ip등록해준다.
app.run(host='0.0.0.0')

디버깅 메세지 나오게 하려면
app.run(debug=True) 라고 해준다.

app.route()

이거는 웹페이지의 경로 설정? 같은거다.
@app.route('/') 는 /페이지이고
@app.route('/home') 이라고 하면 /home 인것이다.

url에 파라메터 받을 때는 
@app.route('/home/<name>')
def home():
return 'home %s' % name

이렇게 하면 name이라는 변수에 담겨나오는거를 쓸 수 있다.

GET, POST를 쓸라면 다음과 같이 하면 된다.

@app.route('/home/<name>', method=['GET', 'POST'])
def home():
if request.method == 'POST':
return 'home post %s' % name
return 'home %s' % name

html 페이지 렌더링
render_remplate라는 것을 쓰면 된다.

이것을 쓰려면 
from flask import render_template

적용할 때는 아래와 같이
@app.route('/home/<name>', method=['GET', 'POST'])
def home():
if request.method == 'POST':
return 'home post %s' % name
return render_template('home.html', name=name)

이때 사용하는 home.html 파일은
해당 python 어플 디렉토리 아래에 temlates 안에 넣으면 된다. 그러니까.
/app
/aaa.py
/templates
/home.html

redirect
redirect(url_for('home/'))
이런식으로 가능하고

에러처리

@app.errorhandler(404)

def page_not_found(error):

return render_template('err.html'), 404


JSON

Flask 는 JSON 형식으로 출력해주는 jsonify 라는 편의함수를 제공


from flask import Flask

from flask import request, jsonify


app = Flask(__name__)

app.debug = True


@app.route("/")

def hello():

return jsonify(

args=request.args, 

result="Hello, %s!" % request.args.get('name', 'World')

)


if __name__ == "__main__":

    app.run()

반응형

'Python' 카테고리의 다른 글

nginx flask 설정  (0) 2014.02.14
YUV420P NV12 Viewer  (0) 2013.02.21
Swig  (0) 2012.01.03
Posted by Real_G