前回スターサーバーでPythonで実装したページを表示させることができました。
今回はPythonのいくつかあるフレームワークをスターサーバーで動かせるかを試してみます。
各フレームワークの特徴
Djangoは最も普及していて多機能
FlaskはDjangoより機能が絞られていて軽量
Bottleは一番機能がシンプルで軽量
Django、Flaskは公式からファイルをダウンロードして配置というわけにはいかず、
pipコマンドというインストール用のコマンドを実行する必要があるので
レンタルサーバーに導入できるか微妙
Bottleは1ファイルだけの構成なのでダウンロードしたファイルをサーバーに
アップロードすれば使えずはず
ということで使うフレームワークはBottleに決定
Bottleのダウンロードと設定変更
公式サイトからbottle.pyをダウンロードする。
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という名前の関数をインポート
※2 ドキュメントルートにアクセスするとindex()が実行される
sample.html
htmlはテンプレートとして作成します
<html lang="ja"> <head> <title>サンプル</title> </head> <body> {{ name }} </body> </html>
index.pyの下記の個所でテンプレートを読み込んでname部分を"テスト"に置換して出力されるようにしてます。
return template("sample", name="テスト")
なお、bottle.pyのソースを確認すると、テンプレートを配置するディレクトリはデフォルトでは同じ階層かviewという名前のディレクトリになります。
テンプレートの拡張子は'tpl', 'html', 'thtml', 'stpl'のようです。
サーバーにアップロード
この状態でアクセスすると
無事表示されました。
まとめ
意外と簡単にBottleを使って画面が表示できました。
テンプレートもシンプルで分かりやすいのでループを使ったりdict型のデータで置換できたりする方法が分かれば
個人のページのような規模の小さいページ作るならBottleはありかなと思いました。