環境構築
“bottle.py”をディレクトリに置けば、そのディレクトリでプログラミングができるようになります。ターミナルで、作業をしたいディレクトリに移動し、wgetコマンドで”bottle.py”を入手してください。
wget https://github.com/bottlepy/bottle/raw/master/bottle.py
wgetコマンドが使えないときは、以下のコマンドでwgetを使用可能にしてください。
brew install wget
サーバの起動
bottle.pyがあるディレクトリで、以下のsample.pyファイルを作成する。
from bottle import route, run @route("/") def index(): return "Hello!" run(reloader=True, port=9999)
その後、ターミナルでsample.pyを実行する。
(atomで開いている場合は、パッケージ→Script→Run Scriptでokです)
python3 sample.py
すると、ターミナルに以下の文章があるので、Webブラウザを開き、URLに打ち込む。
Bottle v0.13-dev server starting up (using WSGIRefServer())... Listening on http://xxx.xxx.xxx.xxx:9999/ Hit Ctrl-C to quit.
ブラウザに、Hello!と出て入ればokです。サーバの起動を確認できました。
@route(“/”)は、ドキュメントルート、つまり、サーバのipアドレスをURLに入れた時に表示されるページであることを意味しています。index関数のreturnにHTMLを入れると、そのページが表示されると言う仕組みになっています。例えば、以下のように書くと、ボタンが出てきます。
from bottle import route, run @route("/") def index(): HTMLtext = '' HTMLtext = HTMLtext + '<head>' HTMLtext = HTMLtext + '<title> PythonHTML </title>' HTMLtext = HTMLtext + '</head>' HTMLtext = HTMLtext + '<body>' HTMLtext = HTMLtext + '<p>Go to the Top Page</p>' HTMLtext = HTMLtext + '<input type="submit" value="button!" onclick="location.href=\'http://int-info.com\'">' HTMLtext = HTMLtext + '</a>' HTMLtext = HTMLtext + '</body>' HTMLtext = HTMLtext + '</html>' return HTMLtext run(reloader=True, port=9999)
なお、以下の記述は、ボタンが押された時(onclick)にhttp://int-info.comに飛ぶ、という意味があります。
<input type="submit" value="button!" onclick="location.href=\'http://int-info.com\'">
デバッグ環境
書いておくと、エラーが出たときにブラウザに理由を記載してくれます。
from bottle import debug
debug(True)
エラー対応
実行すると、ターミナルから「address already use」みたいなエラーが返ってくることがあります。これはサーバを適切に停止させなかった場合に起こります。
lsof -i :9999
と、pythonで指定しているポート番号を打ちます。すると、起動中のPIDの数字が帰ってくるので、以下のコマンドを打ちます。
kill xxx
xxxはPIDの数字です。すると、サーバが停止します。