When it’s ready.

出来るまで出来ない

こんにちわ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する感じ