Python用フレームワークbottleを使ってみた
概要
ちょっとしたプログラムをPythonで作ってWebに公開したかったので、bottleという軽量フレームワークについて基本的な使い方を調べました。
調べたこと
- URLルーティング
- テンプレートの利用
CentOS + Apache + bottleの環境構築方法は別の記事にまとめています。
ApacheでPythonを動かしてみた(bottle利用) - 薮蛇なエンジニアの開発備忘録
URLルーティング
URLルーティングに留まらず、bottleについて幅広くまとめてる方がいらっしゃいました。こちらを実際に試しながら、一部分からないところを追加で調べて書いています。
(参考サイト:Pythonの軽量WebサーバBottleの使い方 - MyEnigma)
ルーティングは以下の形式を覚えておくと汎用的に使えるようです。
@route('【アクセスURL】', method='【HTTPメソッド】') def index(): #アクセス時に呼ばれる関数 return 'Hello World' #画面上に表示
【アクセスURL】と【HTTPメソッド】には任意の値を入れます。
例:@route('/hello/myapp', method='GET')
→http://【IPアドレス】/hello/myappにアクセスするとHello World!という文字列が表示される。
URLをパラメータとして受け取る
GETやPOSTではなくURLをそのまま文字列として受け取れるようです。
@route('/hello/<name>') def index(name): return name
→http://【IPアドレス】/hello/myapp にアクセスするとmyappと表示される
Requestを使う
GETパラメータ取得:request.query['【パラメータ名】']
POSTパラメータ取得: request.forms['【パラメータ名】']
from bottle import route, run, template, request @route('/hello') def index(): return request.query['myapp'] # template("show")
→http://【IPアドレス】/hello?myapp=abcdef にアクセスするとabcdefと表示される
その他リクエスト情報
GET,POST以外のリクエスト情報へのアクセスは自分では試していませんが、網羅的に書いている方がいました。
(参考サイト:BottleのRequest/Responseオブジェクトをマスター - Qiita)
テンプレートエンジン
bottleと同じ階層にviewsというディレクトリを作成し、そこに.tplファイルを作成すると読み込んでくれるようです。
./index.py
@route('/show/<name>') def show(name): return template('show', name=name)
./views/show.tpl
your name is {{name}}
この例だと、tplファイルの{{name}}と書かれた部分に変数が入ります。
→http://【IPアドレス】/show/myname にアクセスすると、your name is mynameと表示される。
まとめ
bottleのURlルーティングとテンプレートエンジンについて調べてみましたが、本当にシンプルで馴染みやすいように感じました。
フォームに値を入力して何か計算して返すぐらいのサイトなら、これですぐ作れると思います。