Flaskのはじめかた

永井
2023-12-06
2023-12-06

はじめに

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/