こんにちわFlaskさん Pythonのお手軽WAF
Djangoはとてもいい。とてもいいが小さなサービスを作るときにはちょっとメンドクサイ。urls.pyみたいなのは別ファイルに別れていなくていいし、settings.pyも毎回同じこと書いてる気がする。大きなサイトや仕事でやるならいいのかも知れないけど小さな物をサックリ何かを作るときにはちょっと大変だと感じる時がある。
その点Flaskはいい、シンプルだしShellを書いてる気分でwebAppを書ける。テンプレートも使えるし、urlsを別に書かなくてもいい!デコレータで書いていくので脳負荷が少ない。
Flaskのインストール
sudo easy_install flask
基本的なやりとり
チュートリアルを適当にまとめてみた。今後の自分用にメモ
flask_basic.py
#!/usr/bin/env python # coding:utf-8 from flask import Flask from flask import abort, redirect, url_for app = Flask(__name__) app.debug = True @app.route("/") def index(): return "root uri" @app.route('/hello') def hello(): return 'Hello World' @app.route('/str/<arg_str>') def show_arg(arg_str): app.logger.info('this is str %s'%arg_str) return '%s'%arg_str @app.route('/int/<int:arg_int>') def show_post(arg_int): return '%s'%arg_int @app.route('/redir') def redir(): return redirect(url_for('index')) if __name__ == "__main__": app.run(host='0.0.0.0', port=9090)
ログインをセッションに記録
#!/usr/bin/env python # coding:utf-8 from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) @app.route('/') def index(): if 'username' in session: return '''Logged in as %s<br> <a href='/logout'>logout</a>'''%escape(session['username']) return '''You are not logged in<br> <a href='/login'>login</a>''' @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': session['username'] = request.form['username'] return redirect(url_for('index')) 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) return redirect(url_for('index')) # set the secret key. keep this really secret: app.secret_key = 'tekitouna himitu no kagi' if __name__ == "__main__": app.run(host='0.0.0.0', port=9090)
以上
これまでで一番簡単で十分な機能がそこそこ入ってる。
足りなければ
http://flask.pocoo.org/extensions/
http://flask.pocoo.org/snippets/
をみればwktkする感じ