Flaskを使ってみるFlaskとBottleを比較するFlaskのことをいろいろ調べていたら、同じようなPythonのWebフレームワークとしてBottleというのがあることが分かりました。WEBで見る限り、非常によく似ていたので違いを試してみました。見た目は全く同じにすることができます。<インストール>どちらもpipを使ってインストールを行います。bottle<Pythonコード>それぞれで使用するpythonコードは以下のようになります。こちらがFlaskです。debug=True)こちらがBottleです。static()はテンプレートのstatic_fileから呼ばれる関数で、staticディレクトリへのフルパスを戻します。dict()の最後のurlはurl()への関数ポインターで、こちらもテンプレートから呼ばれます。Flaskではこのあたりのことはrender_template()がやってくれます。reloader=True)<テンプレートファイル>それぞれで使用するテンプレートファイルは以下のようになります。こちらがFlaskです。filename='images/smile-icon.png')}}"></body></html>こちらがBottleです。filepath="images/smile-icon.png")}}"></body></html><CSSファイル>どちらも同じCSSファイルを使いました。$HOME/bottle/static/images/smile-icon.png<起動画面><日本語マニュアル>Flaskhttps://a2c.bitbucket.io/flask/tutorial/index.htmlBottlehttps://bottl-translate-ja.readthedocs.io/en/latest/01_1_tutorial.html<英語チュートリアル>Flaskhttps://flask.palletsprojects.com/en/1.1.x/tutorial/Bottlehttp://bottlepy.org/docs/dev/tutorial.html少し前まではFlaskはpython3に対応してなかったみたいですが、今は対応しています。ほとんど違いが無いのですが、テンプレートファイルに渡すテンプレートデータの渡し方が、Flaskのほうがスマートだと思います。FlaskでもBottleと同じように、ずらずらとテンプレートデータを並べて指定することができます。url=url)また、テンプレートファイルの指定方法が違います。Flaskではrender_template()の第一引数でテンプレートファイルを指定しますが、Bottleでは@view("sample")で指定します。Bottleの決定的な違いは、テンプレート内にpythonコードを埋め込むことができます。filepath="images/smile-icon.png")}}"></body></html>この機能はFlaskにはありません。この違いは使っているテンプレートエンジンの違いによるものです。EngineドキュメントはJinja2(ニンジャと呼びます)の方がしっかりしています。Bottleの方が一見、高機能に見えますが、ロジックと見た目(テンプレート)を分離するという点ではこのような機能を持たないFlaskの方が正しい実装に見えます。Serverが違いますが、機能的には同じように見えます。http:/HogeHogeで使用しているServerを確認する事ができます。Python/2.7.15+BottleをCtrl-Cで止めると、再開時にこの様なエラーとなる事が有ります。このエラーになったときは、一度セッションを終了すると復活します。Flaskではこのようなエラーになる事は有りません。エラー時の動作など、Flaskの方が安定して動きます。