クラウド開発環境のPaizaCloudクラウドIDEを試しています。今回はPythonのWebアプリケーションフレームワークのFlaskを使ってみます。
まずはですが、PaizaCloudクラウドIDEについては以下の投稿記事で基本的な起動方法、使い方等を書きました。
PaizaCloudクラウドIDEを使ってみる
今回もPaizaCloudクラウドIDEの無料版で出来る範囲なので無料版でやってみます。この無料版でもFlaskがすぐに使える状態なのでインストールの必要がありません。PythonのWebアプリケーションフレームワークを何か試してみたいという場合にもいいと思います。ここではHello Worldの表示から基本的な部分を実際に使ってみます。
PaizaCloudクラウドIDEで新規サーバの作成
まず、PaizaCloudクラウドIDEで新規サーバ作成までは出来ているという前提で進めます。必要な場合は、以下の私の投稿記事を参照して下さい。今回も特にサーバ作成時に別途インストールする機能はないです。
PaizaCloudクラウドIDEを使ってみる
PythonとFlaskのバージョンの確認
以下のようにPythonとFlaskのバージョンが確認出来ました。
Hello Worldから
以下のクイックスタートを見ながらまずはHello Worldから始めます。
クイックスタート(英語版)
クイックスタート(日本語版)
hello.pyを以下の内容で作成して保存します。
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!'
クイックスタートの通りに以下の2行を実行します。
$ export FLASK_APP=hello.py
$ flask run
以下のように起動されました。ここで赤枠の地球アイコンをクリックします。
PaizaCloudクラウドIDE内でブラウザが起動されて問題なくHello, World!が表示されました。
外部からのアクセス
無事にPaizaCloudクラウドIDE内でのブラウザで表示出来ましたが、これでは外部、つまりPaizaCloudクラウドIDE外からはこのFlaskにアクセス出来ません。CtrlキーとCを同時に押してflaskを終了させて再度以下のように起動します。(このあたりもクイックスタートに書かれています。)
$ flask run –host=0.0.0.0
ここでこのブラウザのURLをコピーしてPaizaCloudクラウドIDEとは別にブラウザを起動してそのURLでアクセスします。
以下のように別のブラウザの画面から表示出来ました。
これで、(PaizaCloudクラウドIDEでの無料版の制限はもちろんありますが、)立派にインターネット上のWebアプリケーションとして稼働しました。
ルーティング
次にルーティングを利用して固定のURLで関数を呼び出します。クイックスタートのルーティングの例です。
@app.route('/') def index(): return 'Index Page' @app.route('/hello') def hello(): return 'Hello, World'
hello.pyで保存して以下で実行します。
$ export FLASK_APP=hello.py
$ flask run
まずは、Index Page が表示されました。
次にブラウザのURLにhelloを追加します。そうすると、Hello, World が表示されました。
このように、route()デコレータを使用して、URLをそのURLに対応する処理を実行する関数と結び付ける(bind)ことが出来ます。
テンプレートの利用
引き続きクイックスタートを見ながら実際に実行してみます。次はテンプレートの利用です。FlaskはJinja2テンプレートエンジンを自動的に組み込んでいます。このテンプレートエンジンを使うメリットは、自分でPythonを使ってHTMLを生成しなくていいということです。
以下の内容で、hello.pyを作成します。
from flask import Flask from flask import render_template app = Flask(__name__) @app.route('/hello/') @app.route('/hello/<name>') def hello(name=None): return render_template('hello.html', name=name)
テンプレートのフォルダとして、上のhello.pyと同じディレクトリにtemplatesというディレクトリを作成します。そこにテンプレートとしてhello.htmlのファイル名で以下を作成します。
<!doctype html> <title>Hello from Flask</title> {% if name %} <h1>Hello {{ name }}!</h1> {% else %} <h1>Hello, World!</h1> {% endif %}
以下のような配置です。
今までと同様に実行します。まずは、URLにhelloだけ指定します。以下のように表示されました。テンプレートのh1タグがしっかりと表示されています。
次に hello/YaminoKuraoと指定します。以下のように表示されました。つまりurlに指定した名前がテンプレートのnameに変数として受け渡されています。それが確認出来ました。
今回のまとめ的に
Flaskの基本的な使い方を実際にPaizaCloudクラウドIDEで動作させてみました。ユーザ登録が出来ていればサーバの作成からFlaskの実行までそれ程時間はかかりません。Flaskの導入には充分かと思いました。
実際には以上のような使い方を土台にしてWebアプリケーションを開発していくことになります。そうすると、さすがに無料版では制限があり難しいでしょう。
Flaskについてもう少し補足
Flaskの特徴としては、マイクロフレームワークということで小規模の開発に向いています。一人で何か開発するという場合にはいいと思います。
また、Flaskはフレームワークとして以下のMVTというモデルを採用しています。
M(Model): 実際に扱うデータのモデル(クラス定義)
V(View) : URLリクエストを分岐させて割り当てる処理
T(Template) : 上記でも利用したテンプレートで画面表示の部分
比較的一般的なのは、MVC(Model、View、Controller)ですので、少し違いますが、少なくとも、画面の表示と処理がしっかりと分離しているということです。
このあたり、もし、ご興味とお時間があれば以下から始まる記事を書きましたので、CGIでの処理と今回のFlaskで実行した内容を比較してみて下さい。Flask(Webフレームワーク)の特徴や利点が理解出来るかと思います。
PythonでWebプログラミングの基礎(その1)Webサーバの動作確認
今回は以上です。また書きたいと思います。