2015.6.11
Pythonのマイクロフレームワーク、bottleは慣れてしまえばサクッとWebサービスを公開できるくらいにシンプルで使いやすいフレームワークです。Djangoなどのフルスタックフレームワークとことなり、たったひとつのスクリプトファイルからできているがゆえに、インストールで躓く人も多いようですから今回まとめてみました。
https://www.amazon.co.jp/dp/B01MQU38Y0
Kindle本も公開中ですので合わせてご覧いただければ幸いです。
前述のとおり、bottleは一つだけの.pyファイルから成り立っています。そのためpipなどでインストールする場合は仮想環境下でなければMac本体にインストールされてしまいます。他のPythonライブラリと異なり、bottleはアプリケーションフォルダに一つ必ず必要です。なので、bottleのスクリプトファイル自体をコピーして保存しておくと良いでしょう。
まずはアプリケーション用フォルダを作ってください。myappとしましょう。
$ mkdir myapp
https://raw.githubusercontent.com/bottlepy/bottle/master/bottle.py
上記URLがbottle本体です。これをbottle.pyとしてmyappフォルダに保存しましょう。ここまで出来たら後はノンストップで環境を作っていきます。
#!/user/bin/env python # -*- coding: utf-8 -*- from bottle import route, run, template, request, static_file, url, get, post, response, error import sys, codecs sys.stdout = codecs.getwriter("utf-8")(sys.stdout) @route("/") def html_index(): return template("index") @route("/static/<filepath:path>", name="static_file") def static(filepath): return static_file(filepath, root="./static") @get("/login") def login(): return """ <form action="/login" method="post"> Username: <input name="username" type="text" /> Password: <input name="password" type="password" /> <input value="Login" type="submit" /> </form> """ @route("/login", method="POST") def do_login(): username = request.forms.get("username") password = request.forms.get("password") if check_login(username, password): response.set_cookie("account", username, secret="some-secret-key") return template("index", name=username) else: return "<p>Failed !</p>" def check_login(username, password): if username == "admin" and password=="password": return True else: return False @error(404) def error404(error): return template("404") run(host="localhost", port=8000, debug=True, reloader=True)
これをmain_app.pyとしてmyappフォルダに保存してください。
bottleでサーバーを起動したり、ログインを機能させたり、404エラーを出すための基本的なテンプレートだと思ってください。これを毎回使い回せば、あとは中身にスクリプトを書いていくだけでWebサービスが完成してしまうわけです。
myappフォルダの環境は以下のように作っておきます。
/myapp - bottle.py main_app.py /static - /css - style.css /img /views - index.tpl
myappフォルダの中に /static フォルダ、 /viewsフォルダを作ります。 /staticフォルダは /css /img など静的ファイルを保存するフォルダを作っておきましょう。 /views フォルダの中身がmain_app.pyで呼び出されるページ用ファイルです。拡張子は.tplですが、.htmlでも問題なく動作します。