【PythonのWebフレームワーク Flaskをやってみた1】

はじめに

こんにちは、がんがんです。
今回は最近気になっていたPythonのWebフレームワーク【Flask】について学習してみたのでその備忘録です。

きっかけ

Flaskに興味を持ったきっかけはpaizaのFlask講座です。
paiza.jp

今年の前期にデータベースの授業を受講し、MySQLについて少しだけ触りました。
paizaの講座でもMySQLがあれば受けたいなと思い、探していた時にたどり着いたのがFlaskでした。


実際に体験してみるととてもおもしろく、もっと学びたい!と思う頃には「続きは有料講座」というふうに出ました。
今後有料講座にすることもあるでしょうが、まずは無料で入門できるものはないかと探してみたのがことの始まりです。

Flaskとは

FlaskはPythonのWebフレームワークです。Djangoよりも軽量なWebフレームワークというのが特徴です。

Flaskの入門についてはpaizaさんの方でまとめられているので参考までに。
paiza.hatenablog.com

今回はこちらのFlask入門を試していきました。
Flask入門 - Python学習講座

実験

1. Webアプリケーションの作成

まずは基本をやってみました。
run.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello_world():
	return "<html><body><h1>sample</h1></body></html>"

if __name__ == "__main__":
	app.run()

しっかりとできてました!

f:id:gangannikki:20181107014913p:plain


2. テンプレートの使用

run.pyがあるところにtemplatesというフォルダを作ります。
その配下にindex.htmlというを配置します。index.htmlを以下に示します。

<!doctype html>
<title>サンプル</title>
<head>
    <title></title>
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
            integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"
            integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q"
            crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"
            integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl"
            crossorigin="anonymous"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
          integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link rel="stylesheet" type=text/css href="{{ url_for('static', filename='style.css') }}">
</head>

<body>
	<header>
		<div class="navbar navbar-dark bg-dark box-shadow">
			<div class="container d-flex justify-content-between">
				<a href="/" class="navbar-brand d-flex align-items-center">
					<strong>サンプル</strong>
				</a>
			</div>
		</div>
	</header>
	<div class="content container">
		<h2>値の表示</h2>
		<p>値1:{{ values.val1 }}</p>
		<p>値2:{{ values.val2 }}</p>
	</div>
</body>
</html>

run.pyも以下のように変更します。

from flask import Flask
from flask import render_template

app = Flask(__name__)

@app.route("/")
def hello_world():
	values = {"val1": 100, "val2": 200}
	return render_template( 'index.html', values=values )

if __name__ == "__main__":
	app.run()

しっかりと表示されました。

f:id:gangannikki:20181107014910p:plain

まとめ

とりあえず、Flask入門のHello Worldをやってみました。意外と簡単にできてよかったです。
HTMLの部分が入門としては少し難しかったので、次回はこちらを試してみます。

Pythonで学ぶwebアプリケーションの作り方by Flask — study flask 1 ドキュメント