
当スクールは主にプログラム言語python(パイソン)を教えています。
パソコンで動くゲームを一緒に制作しながら学習していくのが基本的なスタイル。
で、、、ここまで書いといてなんですが、今回はパイソンでゲームではなく、
ホームページを作成してみましょう。
パイソンのWEB作成フレームワーク、「flask」を使って
webを作成していきます~。
パイソンのフレームワーク、flaskって何?
FlaskはPythonで記述できるWeb作成フレームワークです。
PythonのWeb構築フレームワ ークではDjangoがよく知られています。
Djangoは機能が多く、中、大規模のWeb開発によく用いられます。
一方Flaskは最低限の機能を提供しているマイクロフレームワークとなります。
機能が限定されているため、とっつきやすく、学習しやすい傾向があります。
まずは兎にも角にも、flaskをインストール!
まずは動かしてみましょう。
python3系がインストールされている環境では次のコマンドで
flaskをインストールすることが可能です。
あとはpythonファイルを書くだけです。
test.py
ファイルを保存したらmacのターミナルから次の一文を実行して
環境変数の設定を行います。
次にflaskを実行します
これを実行すると次のようなメッセージが表示されるので。
記載されたアドレスにアクセスすれば文字が表示されているのが
確認できると思います。
実行結果
無事文字が表示されました。
はい。恒例の世界への挨拶です(笑)
flask内のコード内容を解説
プログラムの中身をざっくり説明すると次のようになります。
結果として「http://127.0.0.1:5000/」にアクセスするとhello_world関数が実行され
文字が表示されるというわけです。
少しプログラムを追加してみましょう。
そしてhttp://127.0.0.1:5000/code/にアクセスすると次のようになります。
アクセスした際に実行されることがわかると思います。
FlaskでHTMLを表示してみよう
単純な文字を表示しただけではあまり面白味がありませんね。
ちゃんとしたHTMLをFlaskで表示してみましょう。
コードは次のようになります。
結果は次のようになります。
HTMLをpythonから出力しましたが、内容をみてみると単純に
変数にHTMLを文字列として入れているだけです。
これでも動作はするのですが、Webページを修正する際は手間がかかるので
プログラムからHTMLを操作する場合はテンプレートエンジンを利用するのが
一般的です。
flaskではjinja(神社)と呼ばれるテンプレートエンジンを利用することが可能ですので
使ってみましょう。
flask✕jinjaで効率的なウェブ作り
テンプレートエンジンを利用するとユーザやプログラムの結果に応じて
Webの内容を動的に変更することが可能になります。
特に難しいことはなく、プログラムの中で、表示するパラメータをテンプレートと
呼ばれるHTMLファイルに埋め込んいるだけです。
まずはtemplateというフォルダにテンプレート用のhtmlを作成し格納します。
index.html
このテンプレートのHTMLを画面に表示しますが、
body内のリストに中括弧で{{list1}},{{list2}}を追加しています。
これがプログラムから値をいれられる部分となります。
この部分をpythonから指定して画面に表示していくことになります。
それではpython側を次のように変更しましょう。
これを実行し、「http://127.0.0.1:5000/TEST_Flask?param=Test_Get」に
アクセスすると次のような画面が表示されます。
プログラムを解読していきましょう。
最初の部分はテンプレートに必要なモジュールrender_moduleとパラメータを
取得するのに必要なrequestを読み込んでいます。
次のメイン部分ですが
「@app.route」のURLに”<firstParam>”と記載があります。
この部分はURLの/以降の部分を関数の引数として渡すことが可能です。
つまりhtmlのfirstParamにURLで入力した値を渡すことが可能になります。
次に関数内の「getParam = request.args.get(‘param’, ”)」ですが、これは
getで与えられたパラメータをgetParamの変数に格納しています。
そしてreturnでテンプレート変数に書くパラメータを渡して表示しています。
今回の場合はlist1にfirstParam, list2にgetParamを渡しています。
テンプレートとして作成したHTMLのbodyには次のように書かれていました
つまり、HTMLのリストの部分をURLのパラメータで自由に変更できるということに
なります。
実際の実行結果は次の通りです。
少しわかりにくいと思いますがURLの内容がHTMLに反映されています
今回は単純に表示させるだけでしたが、pythonで処理が記述できるため
受け取ったパラメータを元に表示する処理を分岐させたり、
データベースを利用したWEBアプリ等も作ることが可能です、
まずは簡単なところからFlaskを使ってpythonでHTMLを表示できるか
挑戦してみてください。