AB型技術系 主に備忘録

ほぼプログラム関連の備忘録

スターサーバーでBottleを使ってPythonで作成したページが表示されるか?

前回スターサーバーでPythonで実装したページを表示させることができました。

freelancer.hatenablog.jp

今回はPythonのいくつかあるフレームワークをスターサーバーで動かせるかを試してみます。

Pythonフレームワーク

ググってみると下記のフレームワークが見つかりました。

フレームワークの特徴

Djangoは最も普及していて多機能
FlaskはDjangoより機能が絞られていて軽量
Bottleは一番機能がシンプルで軽量

Django、Flaskは公式からファイルをダウンロードして配置というわけにはいかず、
pipコマンドというインストール用のコマンドを実行する必要があるので
レンタルサーバーに導入できるか微妙

Bottleは1ファイルだけの構成なのでダウンロードしたファイルをサーバーに
アップロードすれば使えずはず
ということで使うフレームワークはBottleに決定

Bottleのダウンロードと設定変更

公式サイトからbottle.pyをダウンロードする。

bottlepy.org

Download and Installのbottle.pyをクリックすればダウンロードできます。

bottle.pyのコマンドパスを変更

!/usr/bin/python3.6

サンプルプログラム

index.py

#!/usr/bin/python3.6

# ※1
from bottle import route, run, template

# ※2
@route('/')
def index():
    return template("sample", name="テスト")
# ※3
run(server='cgi')

※1 同じ階層にあるbottle.pyから route, run, templateという名前の関数をインポート

f:id:freelancer13:20210912125212p:plain
route
f:id:freelancer13:20210912125336p:plain
run
f:id:freelancer13:20210912125350p:plain
template

※2 ドキュメントルートにアクセスするとindex()が実行される

※3 pythoncgiとして実行するための設定

sample.html

htmlはテンプレートとして作成します

<html lang="ja">
    <head>
        <title>サンプル</title>
    </head>
    <body>
        {{ name }}
    </body>
</html>

index.pyの下記の個所でテンプレートを読み込んでname部分を"テスト"に置換して出力されるようにしてます。

return template("sample", name="テスト")

なお、bottle.pyのソースを確認すると、テンプレートを配置するディレクトリはデフォルトでは同じ階層かviewという名前のディレクトリになります。

f:id:freelancer13:20210912130904p:plain
テンプレートを配置するディレクトリの設定

テンプレートの拡張子は'tpl', 'html', 'thtml', 'stpl'のようです。

f:id:freelancer13:20210912131347p:plain
テンプレートの拡張子の設定

サーバーにアップロード

f:id:freelancer13:20210912131715p:plain
ドキュメントルート
f:id:freelancer13:20210912131749p:plain
viewディレクト

この状態でアクセスすると

f:id:freelancer13:20210912131901p:plain
表示結果

無事表示されました。

まとめ

意外と簡単にBottleを使って画面が表示できました。
テンプレートもシンプルで分かりやすいのでループを使ったりdict型のデータで置換できたりする方法が分かれば
個人のページのような規模の小さいページ作るならBottleはありかなと思いました。