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ルーティングとテンプレートエンジンについて調べてみましたが、本当にシンプルで馴染みやすいように感じました。

フォームに値を入力して何か計算して返すぐらいのサイトなら、これですぐ作れると思います。