WEBサイトを作成する
今回はポンコツ2人組がPythonでWEBサイトを作成するプログラムに挑戦してみました!
Flaskという軽量なWebフレームワークを使用しています。下記コマンドで事前にインストールしてください。
pip install Flask
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
下記はブラウザで http://127.0.0.1:5000 または http://localhost:5000 にアクセスした結果です。
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)
以下が実行結果です。リンク先のページもバッチリ表示されましたね!
外部ファイル
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が表示されましたね!
FlaskはPythonの標準ライブラリやサードパーティのライブラリとの親和性が高いのが特徴です。
また、柔軟性があり必要に応じて様々な拡張機能を追加できますので、プロジェクトの要件に応じてカスタマイズすることができます。
さて、ポンコツ2人組は今回のプログラムを理解できたのでしょうか?
よく理解できなかった人は実際にプログラムを自分で書き、実行してみて理解を深めてみてください。