Blog

Pythonフレームワーク bottle超基礎入門

2015.06.11 | Python | 5378views


python-logo-master-v3-TMPythonのマイクロフレームワーク、bottleは慣れてしまえばサクッとWebサービスを公開できるくらいにシンプルで使いやすいフレームワークです。Djangoなどのフルスタックフレームワークとことなり、たったひとつのスクリプトファイルからできているがゆえに、インストールで躓く人も多いようですから今回まとめてみました。

bottleでWebサービスを公開するまで

bottleのインストール

前述のとおり、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でも問題なく動作します。

このエントリーが役に立ったらシェアしてください


LLC JIRIKI HOME

この記事を書いた人

淵上 喜弘

著者:LLC JIRIKI

合同会社ジリキ 代表社員兼、業務執行社員。
1979年生まれ 兵庫県尼崎市出身・明石市育ち。

川崎医療福祉大学を卒業後、日産サティオ岡山に就職し初年度新人賞をカルロス・ゴーンCEOより受賞。その後NTT関連フレッツ販売会社に再就職し、地域賞2位を受賞。OCN販売表彰2位も同時受賞するとともにBフレッツ単独販売数の記録を打ち立てる。2006年合同会社ジリキ設立。SEO、WEBサイト制作業を開始する。

SEOで「大阪 探偵」や「離婚 行政書士」などのキーワードや「子ども 教材」「スマートフォンケース」など各種キーワードで1位を獲得。サイト制作でも毎日コミュニケーションズ・マイナビ女子オープンのサイトを制作。その後ECサイト運営サポートに着手し、売上月商50万のストアを1年半で1700万の月商に成長させる。

スマートフォンケースなどの商品企画開発も手がけ、楽天ランキングでも1位獲得、家電ジャンルMVPなどECサイトコンサルティングでも実績あり。

現在、グロースハックに注力しており様々な業種のサイトのCVアップをサポート中。チームとしてのグロースハック実績ではKaizenグロースハッカー総合 Top 20%、不動産 Top 10などを頂いています。

プログラミングは本業ではなくあくまでも趣味の一環として取り組んでいます。月1回ペースで東京へ出張へ行っておりますので、機会があれば是非お話をしましょう。

LLC JIRIKI