HTMLレンダリングルーティングURL変数GETPOST準備編FlaskについてまずはFlaskについて知らなければ何も始まりません。FlaskはWebアプリケーションフレームワークなので、Webアプリケーションを作ることができます。PythonのWebアプリケーションフレームワークはDjangoが有名ですが、比較的大規模向けで、シングルページのWebアプリケーションや、DBを使わないようなWebアプリケーションには対しては少し冗長な気がします。それに対してFlaskは小規模な開発に対して学習コストが低く、簡易的なWebアプリケーションであれば、すぐに動作します。僕はよくFlaskを使います。インストールFlaskはpip経由でインストールできます。flask簡単ですね。この記事で使うファイルファイル内容は全て記事内に書くので、記事をコピペしていっても動作はするようにします。それぞれのコードの1行目にパスとファイル名を書こうと思います。基本設定Webサーバ起動とりあえず動かしてみて、どのような記述をし、どのように起動をするのか確認してみましょう。world!と表示されます!では、それぞれの設定を見ていきましょう。アドレス変更(外部公開)先ほどのアドレスがhttp://127.0.0.1:5000/となっていることからわかるように、初期設定ではローカルでサーバが立ち上がるようになっています。これを他アドレス、例えば外部公開(0.0.0.0)にするにはrunに対して、hostを引数として与えます。app.run(host='0.0.0.0')これで、外部からアクセスできるようになりました。ポート変更ポートの変更もrunに引数を与えることで指定できます。多数アクセスに対して並列処理を行うには並列処理機能をオンにしなければなりません。こちらもrunに引数を与えます。app.run(threaded=True)デバッグモード編集を加えるたびにいちいちサーバを再起動するのは面倒です。そこで、デバックモードを使うことで、サーバを立てたまま編集が可能になります。こちらもrunに引数を与えます。app.run(debug=True)今回の記事内では間違いをすぐ修正できるように、常にこのデバッグモードにしておきますが、適宜自分で変更してください。world!と表示されてもつまらないので、普通のHTMLをレンダリングしてみましょう。使用するHTMLはこちらです。}}</p></body></html>まず、保存するディレクトリに注意してください。Flaskで使うHTMLはtemplatesに、CSSや画像のリソースはstaticに保存します。こちらは設定で変えることもできますが、それはまたの機会に。}}という囲いがありますね。こちら、Flask側から変数を埋め込むためのプレースホルダです。次にFlaskのファイルです。app.run(debug=True)先ほどと比べrender_templateが増えました。この関数により、HTMLにあったプレースホルダを埋めた状態のHTMLを得ることができます。render_templateは第1引数にHTMLファイル名、プレースホルダにつけた名前のキーワード引数に埋め込む内容を渡します。world!と表示されるだけですね笑。繰り返し表示(for文)render_templateでは数値や文字列だけでなく、配列を渡し、HTML内でfor文を書くこともできます。app.run(debug=True)これで、3人の名前が表示されたはずです。これを使えば様々な活用ができますね!条件付き表示(if文)for文が使えるように、HTML内でif文も使えます。Message.と表示されます。他のHTMLを埋め込み例えばHTMLのheadやコンテンツの一部を共有する場合に、他のHTMLに別のHTMLを埋め込むこともできます。app.run(debug=True)こちらはlayout.htmlの中にindex.htmlを埋め込んでいます。変数の埋め込みはどちらのHTMLに対してもできるので、どんどん拡張していけます。ルーティングそろそろシングルページは飽きてきましたね。他のルートも作ってみましょう。実は、先ほどからずっと出てきている@app.route('/')というデコレータを変更することで、ルートを変更できます。app.run(debug=True)これで、http://127.0.0.1:5000/にアクセスするとindex、http://127.0.0.1:5000/1にアクセスするとpage1、http://127.0.0.1:5000/2にアクセスするとpage2と表示されます。先ほどのルーティングの例では単純に/1でpage1、/2でpage2と表示されますね。これを100ページまで作りたいとなった時に、全てなんて作ってられません。そこで、URLから変数を得ることができます。app.run(debug=True)ルートに<変数名>を入れ、関数の引数として指定すると、URLから値を受け取ることができます。することで、どのような入力が来てもページを生成することができます。(f-stringsを使用しているのでPythonが3.6未満の人はf'page{number}'を'page'+numbarとかにしてください。)GETさあURLで変数を指定できるだけでは微妙です。GETでデータを受け取ってみましょう。app.run(debug=True)送信を押したらそのまま表示される何でもない活用方法ですが、GETで受け取った変数はrequest.args.getで名前を指定することで受け散ることができます。POSTGETをやったなら次はPOSTです。app.run(debug=True)POSTはPOSTであることをルートのところで明示しなければなりません。受け取りはrequest.formに入っています。これは辞書型のような形式になっているの、それぞれの名前から値を引き出せます。おわりに1記事にまとめようとしたら、馬鹿みたいに長くなりました笑。追記するようなことがあれば、どんどん足していくので、もし書いて欲しいことがあればコメントとかください。Commentsラズパイの初心者です。測定した温度をブラウザに一定間隔(0.5~1秒)で更新しながら表示して行くことを試しています。使って、それは実現できています。調べるうちに「Flask」というものがあることを知りました。比べると、実に簡単にブラウザに測定した温度を表示できることに驚きました。測定した温度を更新するには、ブラウザに「リロード」のボタンを付けて更新する方法しか見つけることができませんでした。Flaskでは、基本的に「リロード」の方法しかないのでしょうか。それだけを教えていただけないでしょうか?突然の質問で、すみません。05:39Flask(サーバサイド)だけでは、一定間隔で表示を切り替えることは難しいです。書くことにはなりますが、リアルタイムに更新させることはできます。使用することで実現できます。わからないことがあれば、可能な限りはお答えします。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。ボリュームアクセスが遅いので使うのやめた。