PR

【Windows PCで始める!】Python Flaskで簡単なWebアプリ開発ガイド 🖥️✨

Python
広告

Pythonは、初心者にも学びやすく、多くの分野で活躍する人気のプログラミング言語。その中でも軽量フレームワーク「Flask」は、シンプルで直感的なWebアプリ開発が可能です。

この記事では、Windows PCを前提にFlaskの環境構築から簡単なWebアプリ作成までを分かりやすく解説します!👨‍💻

広告

Flaskとは?そして選ばれる理由 🚀

Flaskは、Pythonで作られた軽量フレームワークで、以下の特徴を持っています。

  • 軽量で自由度が高い:必要な機能だけを追加してアプリを構築可能。
  • 学びやすい:最小限のコードで動作するので初心者にも優しい。
  • 小規模アプリや個人開発に最適:プロトタイプやシンプルなアプリを短期間で作れる。

特に、「Pythonを少し学んだし、Webアプリも作りたい!」という人に最適です。

環境構築:PythonとFlaskを準備する 💻

Pythonのインストール

Pythonのダウンロード

  • 公式サイトからPythonをダウンロード。
  • Windows向けの最新バージョンを選択します。

インストール

  • ダウンロードしたインストーラーを実行。
  • インストール画面で「Add Python to PATH」にチェックを入れ、Customize installation をクリック。
  • 「pip」や「Python Launcher」にチェックが入っていることを確認し、インストールを完了させます。

インストール確認

python --version 

ターミナルにバージョンが表示されればOKです。

仮想環境を作成する

仮想環境を使うと、プロジェクトごとに依存関係を分離できます。

プロジェクトフォルダを作成

mkdir Project
cd Project
広告

仮想環境を作成

python -m venv venv

仮想環境を起動

venv\Scripts\activate

成功すると、コマンドプロンプトに (venv) と表示されます:

(venv) C:\path\to\Project>

Flaskのインストール

pip install flask

インストール確認

flask --version

Flaskアプリを作ってみよう!🌟

プロジェクト構造を作成

以下のような構造にします。


├── Project/
│ ├── __init__.py
│ ├── views.py
├── run.py

基本のWeb表示「Hello, World!」

アプリ初期化(__init__.py

from flask import Flask

app = Flask(__name__)

import Project.views

ルート設定(views.py

from Project import app

@app.route("/")
def home():
    return "Hello, World!"
広告

アプリ起動スクリプト(run.py

from Project import app

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

サーバーの起動

仮想環境を有効にした状態で以下を実行。

python run.py

ブラウザで確認

http://127.0.0.1:5000 にアクセスすると、「Hello, World!」が表示されます!🎉

Webページを作成しよう 🌐

次に、HTMLテンプレートを使ったWebページを作成します。

HTMLテンプレートの準備

テンプレートフォルダを作成

Project/ 
├── templates/
│ └── index.html

HTMLファイルを作成(index.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Webアプリ作成</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>{{ message }}</p>
</body>
</html>

Pythonコードでデータを渡す

views.py↓

from Project import app
from flask import render_template

@app.route("/")
def home():
    return render_template("index.html", title="Flaskアプリ", message="ページを表示!")

ブラウザで確認

http://127.0.0.1:5000 にアクセスすると、

広告

フォームを使ってデータ送信 ✉️

ディレクトリ構造

├── Project/
│ ├── __init__.py
│ ├── views.py
│ ├── templates/
│ └── index.html
│  └── other1.html
├── run.py

フォームを使って、ユーザーからの入力を受け取ります。

フォームページを作成

HTMLフォームの作成(other1.html)

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>フォーム送信</title>
</head>
<body>
    <h1>フォームからのデータ送信</h1>
    <form action="/other1" method="POST">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name">
        <button type="submit">送信</button>
    </form>
</body>
</html>

データ受け取り処理

views.py↓

from Project import app
from flask import render_template, request

@app.route("/")
def home():
    return render_template("index.html", title="Flaskアプリ", message="ページを表示!")

@app.route("/other1", methods=["GET", "POST"])
def other1():
    if request.method == "POST":
        name = request.form["name"]
        return f"こんにちは、{name}さん!"
    return render_template("other1.html")

ブラウザで名前を入力して送信すると、メッセージが表示されます。

↓↓↓

↓↓↓

静的ファイルを扱う(画像やCSS) 🎨

Flaskで画像やCSS、JavaScriptを使用するには、staticフォルダを利用します。

ディレクトリ構造

Project/
├── static/
│ ├── images/
│ │ └── flask-logo.png
│ ├── css/
│ │ └── style.css

HTMLで静的ファイルを読み込む

<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
<img src="{{ url_for('static', filename='images/flask-logo.png') }}" alt="Flaskロゴ">

CSSファイルの例

/* static/css/style.css */
body {
    background-color:hsl(104, 49.50%, 80.60%);
    font-family: Arial, sans-serif;
}

ブラウザで確認して、スタイルが適用されていればOKです!

今までのディレクトリ構造

├── Project/
│ ├── __init__.py
│ ├── views.py
│ ├── templates/
│ │ ├── index.html
│ │ └── other1.html
│ ├── static/
│ │ ├── images/
│ │ │ └── flask-logo.png
│ └── css/
│ └── style.css
├── run.py

データベースの基本操作 🗄️

データの保存や管理にはデータベースが必要です。ここではSQLiteを使った基本的なCRUD操作を説明します。

ディレクトリ構造

├── Project/
│ ├── __init__.py
│ ├── views.py
│ ├── models.py # モデルを定義
│ ├── templates/
│ │ ├── index.html
│ │ └── other1.html
│ │ └── users.html
│ ├── static/
│ │ ├── images/
│ │ │ └── flask-logo.png
│ └── css/
│ └── style.css
├── instance/
│   └── app.db # SQLiteデータベース
│ 
├── run.py

instance/app.db は、アプリの初回実行時にflask-sqlalchemyによって自動生成され、定義されたモデルに基づいてテーブルが作成されます。

Flask-SQLAlchemyのインストール

pip install flask-sqlalchemy
広告

データベース設定

アプリとデータベースの設定を行います。

__init__.py ↓↓

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# データベース設定
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///app.db"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)

import Project.views
import Project.models

モデル(テーブル)の作成

データベースのテーブル構造(モデル)を定義します。

models.py ↓↓

from Project import db

# ユーザーテーブルのモデル定義
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)  # 主キー
    name = db.Column(db.String(80), nullable=False)  # 名前(必須)
    email = db.Column(db.String(120), nullable=True)  # 必須ではない場合はnullable=Trueにする

    def __repr__(self):
        return f"<User {self.name}>"

データの登録と取得

データベース操作のルートを追加します。

views.py ↓↓

from Project import app, db
from Project.models import User
from flask import render_template, request, redirect, url_for

@app.route("/")
def home():
    return render_template("index.html", title="Flaskアプリ", message="ページを表示!")

@app.route("/other1", methods=["GET", "POST"])
def other1():
    if request.method == "POST":
        name = request.form["name"]
        email = request.form.get("email")  # フォームからemailを取得
        user = User(name=name, email=email) # 登録
        db.session.add(user)  # 登録
        db.session.commit()   # 登録
        return f"こんにちは、{name}さん! メールアドレス: {email}"
    return render_template("other1.html")

@app.route("/users")
def show_users():
    users = User.query.all()  # 取得
    return render_template("users.html", users=users)

登録されたユーザーを一覧表示します。

users.html ↓↓

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>一覧表</title>
</head>
<body>
    <h1>ユーザー一覧</h1>
    <ul>
        {% if users %}
            {% for user in users %}
                <li>{{ user.name }} - {{ user.email or "メール未登録" }}</li>
            {% endfor %}
        {% else %}
            <p>ユーザーが登録されていません。</p>
        {% endif %}
    </ul>
</body>
</html>

動作確認

↓↓

↓↓

↓↓

まとめ 🏁

この記事では、Windows PCを使ったPython Flaskの環境構築から、簡単なWebアプリの作成までを紹介しました。

  1. PythonとFlaskのセットアップ
  2. 「Hello, World!」アプリ作成
  3. HTMLテンプレートで動的ページ作成
  4. フォームとデータ送信
  5. 静的ファイルの扱い
  6. データベースとの連携

あなたのアイデアを形にしたWebアプリを作りましょう!✨

以下のリンクでは、Pythonに関する記事をまとめています。各記事をクリックして、詳しい情報をご確認ください。

タイトルとURLをコピーしました