DarkLogo

PythonとFlaskで掲示板アプリを作ろう

· Kishimoto

はじめに

この記事は知り合いの学生さん用に作成したものになります。
筆者はpythonでのweb開発経験はほとんどありませんが取っ掛かりとして参考程度になればと思い作成しておりますので モダンな構成は云々だったり、実務では云々と言うツッコミは一旦引っ込めて頂けると幸いです。

また下記はミニマム実装になっておりますので今後必要であると思われる対応を先に記載しておきます。

1. git管理

チーム開発する上でgitの知識は確実に必要でしょう! ですので今のうちに使い方に慣れるといいでしょう、おすすめはGitHubと言うサービスをまずは利用してみてください。

2. 記事削除機能

現在はメインページと記事投稿の機能しかありませんが一般的な機能の一つとして実装してみてください。

3. 記事編集機能

こちらも上記と同じでよくある機能かと思いますので実装してみてください

4. コメント機能

コメントも当然よくある機能かと思いますが、上記と比べると多少応用が必要かも知れませんので余裕があれば挑戦してみるといいかも知れません。

5. DBでのデータ管理

現在はarticlesに保存するような形を取っていますが本来はDBに登録、更新、削除などの操作を行なってデータ管理する必要があるかと思います。 こちらはwebをやっていく上では必須ですので是非勉強してみてください。

6. ネットへ公開

上記が完了すれば次は実際にネット上に公開したくなるかも知れません、これも色々なサービスがありますので 調べてネットに公開してみても面白いかも知れません。

上記はあくまで参考程度で他にも追加したい機能など検討してどんどん実装してみてください!!!



本文はここから!!

Pythonは、そのシンプルな文法や豊富なライブラリのおかげで、Webアプリケーションの開発にも使われることがあります。また、Pythonには多数のWebフレームワークが存在し、中でもFlaskは小規模なWebアプリケーションの開発に適しているとされています。今回は、PythonとFlaskを使って、シンプルな掲示板アプリを作成してみましょう。

Flaskのインストール

まずはじめに、Flaskをインストールします。Flaskを使うためには、以下のコマンドをターミナルに入力して、Flaskをインストールする必要があります。

pip install flask

ファイルの作成

次に、Pythonファイルを作成します。例えば、app.pyという名前のファイルを作成し、以下のコードを記述します。

from flask import Flask, render_template, request, redirect
import os

app = Flask(__name__)

# 記事を保存するためのリスト
articles = []

# メインページ
@app.route('/')
def index():
    return render_template('index.html', articles=articles)

# 記事を投稿するページ
@app.route('/post', methods=['GET', 'POST'])
def post():
    if request.method == 'POST':
        # フォームから送信されたデータを取得
        title = request.form['title']
        body = request.form['body']
        # 記事を保存
        articles.append({'title': title, 'body': body})
        # メインページにリダイレクト
        return redirect('/')
    else:
        return render_template('post.html')

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

HTMLテンプレートの作成

掲示板アプリを実装するためには、以下の2つのHTMLテンプレートが必要です。

templates/index.html

<!DOCTYPE html>
<html>
<head>
    <title>掲示板</title>
</head>
<body>
    <h1>掲示板</h1>
    <ul>
        {% for article in articles %}
        <li>
            <h2>{{ article.title }}</h2>
            <p>{{ article.body }}</p>
        </li>
        {% endfor %}
    </ul>
    <a href="/post">記事を投稿する</a>
</body>
</html>

templates/post.html

<!DOCTYPE html>
<html>
<head>
    <title>記事を投稿する</title>
</head>
<body>
    <h1>記事を投稿する</h1>
    <form action="/post" method="post">
        <div>
            <label for="title">タイトル</label>
            <input type="text" id="title" name="title">
        </div>

        <div>
          <label for="body">本文</label>
          <textarea id="body" name="body"></textarea>
        </div>

        <button type="submit">投稿する</button>
    </form>
    <a href="/">メインページに戻る</a>
</body>
</html>

アプリの起動

最後に、以下のコマンドを実行してアプリを起動します。

export FLASK_APP=app.py
flask run

これで、掲示板アプリが起動します。メインページであるhttp://127.0.0.1:5000/にアクセスすると、投稿された記事が一覧で表示されます。また、記事を投稿するためのページは、http://127.0.0.1:5000/postでアクセスすることができます。新しい記事を投稿すると、メインページにリダイレクトされ、投稿された記事が表示されます。

このサンプルコードでは、Flaskを使ってWebアプリケーションを作成しています。render_template関数を使ってHTMLテンプレートを表示したり、requestオブジェクトを使ってフォームからのデータを取得したりしています。また、リストを使って記事を保存していますが、実際のアプリではデータベースを使うことが一般的です。

この記事では、PythonとFlaskを使って、シンプルな掲示板アプリを作成しました。Flaskは小規模なWebアプリケーションの開発に適しているため、初めてWebアプリケーションを開発する人には特におすすめです。また、今回のサンプルコードをベースに、様々な機能を追加したり改良したりして、自分だけのWebアプリケーションを作成してみることをおすすめします。