コンテンツにスキップ

第1章 サイト設計

ユーザがログインして、画像を投稿ができる画像投稿サイトを作成します。 全体の一覧、さらにユーザごとの一覧ページを作成します。 今回はユーザ登録はあらかじめ行われているものとします。

1 データベース設計

まず、データベースを設計します。データベースのファイル名は db_app.pyとし、以下の2テーブルとします。

ユーザテーブル

テーブル名:user

  • ユーザID uid INTEGER PRIMARY KEY
  • ユーザ名 uname TEXT
  • パスワード upass TEXT

投稿テーブル

テーブル名:toukou

  • 投稿ID tid INTEGER PRIMARY KEY
  • ユーザID uid INTEGER
  • 画像ファイル名 image TEXT
  • 本文 mes TEXT
  • 投稿日時 hi DATETIME

2 ページ設計

続いてページを設計します。 以下のようなページを作ることに決めました。

投稿一覧ページ

URL:/ 関数名:index() 全投稿を一覧で表示します。 ユーザ名、投稿日時、画像を3列で表示することにします。

投稿個別ページ

URL:/toukou/投稿ID 関数名:toukou(tid)

投稿一覧ページで画像をクリックすると投稿個別ページに遷移します。 その投稿のユーザ名、投稿日時、画像、本文を表示します。 また、削除へのリンクを設置します。

ユーザ別一覧ページ

URL:/user/ユーザID 関数名:user(uid)

そのユーザの投稿を一覧で表示します。 投稿一覧と同じく投稿日時、画像を3列で表示することにします。ユーザ名は全て同じなので表示しません。

ログインページ

URL:/login 関数名:login、login_post

ユーザ名とパスワードを入力し、合致すれば投稿一覧ページに遷移します。

また、ログインしていない場合、閲覧も出来ないことにします。投稿一覧ページでログインしていないかをチェックし、ログインしていない場合、このページに遷移します。

ログアウト

URL:/logout 関数名:logout

ログアウトはページの表示はありませんが、このURLにアクセスするとログアウトし、ログインページにリダイレクトします。

アップロードページ

URL:/upload 関数名:upload_get、upload_post

投稿のアップロードを行います。画像をアップし、本文を入力します。アップロードを完了すると、トップページに遷移します。

削除ページ

URL:/del/投稿ID 関数名:del_get、del_post

投稿の削除確認画面を表示します。そこではその投稿のユーザ名、投稿日時、画像、本文を表示します。

削除ボタンを押すと同じURLにPOSTで遷移し、実際に削除してトップページにリダイレクトします。

変更ページ

URL:/update/投稿ID 関数名:update_get、update_post

投稿の変更画面を表示します。そこではその投稿のユーザ名、投稿日時、画像、を表示し、本文のみ変更できるようにします。

変更ボタンを押すと同じURLにPOSTで遷移し、実際に変更してその投稿のページにリダイレクトします。