はじめに
PythonにはWebアプリケーションを作成するためのフレームワークがいろいろあると思いますが、今回はその中でも軽量なフレームワークとして有名なFlaskを使用していきます。
Flaskのはじめかた
■今回の環境
- Python 3.9.13
- pip 20.2.4
- flask 3.0.0
■app.pyの作成
コードは以下のようになります。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
app.run(port=3000, debug=True)
1行目:Flaskをインポートする
2行目:Flaskのインスタンスを作成する
3行目:ルートの設定をする(今回の場合localhost:3000/にアクセスがあった場合の挙動)
4~5行目:処理内容の関数を定義する
6行目:ポートを指定しデバッグを有効化にする
実行してアクセスしてみましょう。
$ python app.py
~~~省略~~~~
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 130-990-071
上記のように出力されていれば問題無く動いているかと思います。
では、以下のリンクにアクセスしてみましょう。
http://localhost:3000/
「Hello, World!」と出力されていれば問題無く動いてます。
アクセスした際、コンソールに以下のようなログが流れているかと思います。
127.0.0.1 - - [05/Dec/2023 13:20:21] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [05/Dec/2023 13:20:24] "GET / HTTP/1.1" 200 -
■HTMLファイルの出力
以下のような構成でindex.htmlファイルを作成してください。
├── app.py
└── templates
└── index.html
index.html(例)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask Test</title>
</head>
<body>
<h1>Flask Test</h1>
</body>
</html>
app.pyの修正を行います。
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def hello_world():
return render_template("index.html")
app.run(port=3000, debug=True)
前回からの変更点としては、「render_template」をインポートを行っている点と、
hello_world関数では「render_template」を使ってHTMLファイルを返しています。
これでHTMLファイルが表示されるはずです。
再度、以下のリンクにアクセスし確認してみてください。
http://localhost:3000/
おわりに
FlaskはDjangoなどと違い基本的に1から作っていく感じで楽しいです。
個人的にはFlaskでWebアプリを作った後にDjangoなどを触ると、仕様などをすんなり理解できるような気がしました。
興味があれば発展させて何か作ってみてください。
参考サイト
公式:
https://flask.palletsprojects.com/en/3.0.x/
日本語訳(公式ではない):
https://msiz07-flask-docs-ja.readthedocs.io/ja/latest/