LoginSignup
130
132

More than 5 years have passed since last update.

pythonの軽量framework, Bottle

Last updated at Posted at 2013-05-27

偶然pythonを使って簡単なweb applicationを作ることになったので使ってみた。

求めるものとしては

  • 導入が簡単
  • routingなどの最低限の機能
  • template

があればよかった。ちょうど探してみるとBottleというのが良さげだったのでメモ代わりに。

とりあえずpython自体も初めて使うのでpythonのインストールから

python2系か3系か、どっちを使えばいいのかすら分からなかったのでとりあえず複数の環境を持てるpyenvを使うことに。

pyenvのinstall

cd ~
git clone git://github.com/yyuu/pyenv.git .pyenv

echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.zshrc
echo 'eval "$(plenv init -)"' >> ~/.zshrc
exec $SHELL -l

とりあえず2.7系を入れる
pip(gemみたいな?)も一緒に入ってくれるので便利

pyenv install 2.7.5

そしたらreadlineがないって言われたのでhomebrewでinstall

brew install readline
brew link readline

common problemらしく、ここに他にもいろいろ書いてある

とりあえず入ったのでBottleを使う

pip install bottle

で入る。

bottleはbottle.pyという1ファイルがすべて。そこから必要なものをimportしながら使っていくらしい。

とりあえずhello world(sampleそのまま)

hello.py
from bottle import route, run

@route('/hello/:name')
def hello(name):
    return '<h1>Hello %s!</h1>' % name

run(host='localhost', port=8080)

これでコマンドライン上で

python hello.py

これで locahost:8080/hello/tak0303 にアクセスすると、
Hello tak0303! となる。簡単。

htmlでtemplateを使いたいときは同じディレクトリにviewsというフォルダを作って、そこに入れる。

show.tpl(拡張子はなんでもいいらしい)
<h1>{{name}}</h1>
hello.py
from bottle import route, run, template

@route('/hello/<name>')
def hello(name='unknown'):
    return template('show', name=name)

run(host='localhost', port=8080)

こんな感じでできる

あと、最初の状態だと、ファイルの変更時にサーバを再起動しなければならず、また、デバッグしづらく、かなり不便なので

run(host='localhost', port=8080, debug=True, reloader=True)

こうすることでブラウザ上にエラーが表示されるのと、ファイルの変更時に自動的にサーバを再起動してくれる。

参考: http://bottlepy.org/docs/dev/index.html

130
132
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
130
132