WEBサイトを作成する

今回はポンコツ2人組がPythonでWEBサイトを作成するプログラムに挑戦してみました! Flaskという軽量なWebフレームワークを使用しています。下記コマンドで事前にインストールしてください。
pip install Flask

※この記事は2024/04/03時点の情報です。

web.py
まずは最低限の実装をしてみました。 このスクリプトでは、Flaskアプリケーションを作成し、ルートURL('/')にアクセスがあった場合に"Hello, World!"というテキストを表示します。

from flask import Flask

# Flaskアプリケーションの作成
app = Flask(__name__)

# ルートURLへのリクエストに対する処理
@app.route('/')
def hello():
    return 'Hello, World!'

# サーバーを起動する
if __name__ == '__main__':
    app.run(debug=True)

Flaskを使用すると非常に簡単に実装できてしまいました。 たった数行でWEBサーバーまで起動されるとは驚きです!以下のコマンドで実行します。
python web.py

PythonのWEBプログラムを実行

下記はブラウザで http://127.0.0.1:5000 または http://localhost:5000 にアクセスした結果です。

WEBサイトにアクセスした結果

web.py
「Hello, World!」だけでは寂しいので、HTMLの要素を増やしてみました。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    # HTMLのテンプレートを返す
    return """
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Flask Webサイト</title>
    </head>
    <body>
        <header>
            <h1>ようこそ! Flaskで作成したWEBサイトです!</h1>
        </header>
        <nav>
            <ul>
                <li><a href="/">Home</a></li>
                <li><a href="/link1">リンク1</a></li>
                <li><a href="/link2">リンク2</a></li>
            </ul>
        </nav>
        <section>
            <h2>ポンコツ2人組のプログラミング</h2>
            <p>このページはポンコツ2人組が無謀にもプログラミングに挑む熱きドキュメントです!</p>
        </section>
        <footer>
            <p>© 2024 フッター. All rights reserved.</p>
        </footer>
    </body>
    </html>
    """

@app.route('/link1')
def about():
    return "<h2>リンク1のページ</h2><p>上手くページ遷移できましたか?</p>"

@app.route('/link2')
def contact():
    return "<h2>リンク2のページ</h2><p>なるほど!このように実装するのですね!</p>"

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

以下が実行結果です。リンク先のページもバッチリ表示されましたね!

WEBページのホーム

リンク1のWEBページ

リンク2のWEBページ

外部ファイル
HTMLを外部ファイルに分離することができます。 これにより、アプリケーションのメインロジックとHTMLのコンテンツが分離され、管理が容易になります。

index.html
templatesフォルダを作成し、index.htmlを配置します。templates/index.htmlというディレクトリ構造です。 このHTMLファイルでは、Flaskのテンプレートエンジンの機能を使って、変数 title と content を表示しています。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask Webサイト</title>
</head>
<body>
    <header>
        <h1>ようこそ! Flaskで作成したWEBサイトです!</h1>
    </header>
    <nav>
        <ul>
                <li><a href="/">Home</a></li>
                <li><a href="/link1">リンク1</a></li>
                <li><a href="/link2">リンク2</a></li>
        </ul>
    </nav>
    <section>
        <h2>{{ title }}</h2>
        <p>{{ content }}</p>
    </section>
    <footer>
        <p>© 2024 フッター. All rights reserved.</p>
    </footer>
</body>
</html>

web.py
以下のように修正することで、web.pyにHTMLコンテンツを直接記述する代わりに、Flaskの render_template 関数を使ってテンプレートファイルをレンダリングすることができます。 これにより、HTMLとPythonコードが分離され、アプリケーションのメンテナンスが容易になります。

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html', title='ポンコツ2人組のプログラミング', content='このページはポンコツ2人組が無謀にもプログラミングに挑む熱きドキュメントです!')

@app.route('/link1')
def about():
    return render_template('index.html', title='リンク1のページ', content='上手くページ遷移できましたか?')

@app.route('/link2')
def contact():
    return render_template('index.html', title='リンク2のページ', content='なるほど!このように実装するのですね!')

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

以下が実行結果です。外部ファイルにしたindex.htmlが表示されましたね!

WEBページのホーム

リンク1のWEBページ

リンク2のWEBページ

FlaskはPythonの標準ライブラリやサードパーティのライブラリとの親和性が高いのが特徴です。 また、柔軟性があり必要に応じて様々な拡張機能を追加できますので、プロジェクトの要件に応じてカスタマイズすることができます。
さて、ポンコツ2人組は今回のプログラムを理解できたのでしょうか?

PythonのWEBサイト作成のプログラムを覚えられましたか?

よく理解できなかった人は実際にプログラムを自分で書き、実行してみて理解を深めてみてください。

管理人情報