第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で遷移し、実際に変更してその投稿のページにリダイレクトします。