Python Django 入門トップページ


ユーザ認証とコメント掲示板の開発

  1. プロジェクトの概要
  2. プロジェクトの作成と初期設定
  3. アプリケーションの作成と有効化
  4. ルートの記述
  5. ビューの定義
  6. HTML のテンプレート化
  7. HTML ファイルの作成
  8. Web ページ雛形の表示確認
  9. トップページの作成
  10. データベースのマイグレーション
  11. ユーザの作成
  12. ユーザ認証機能の実装
  13. セッション情報の確認
  14. ユーザ認証の状態を表示
  15. Navbar を設置
  16. モデルの作成とマイグレーション
  17. テストデータの投入
  18. コメントの一覧表示
  19. ページネーションと更新逆順表示
  20. コメント投稿機能の実装
  21. フラッシュメッセージ
  22. コメント詳細表示ページの実装
  23. 投稿者のユーザ名とメールアドレスの表示
  24. 投稿者であるかどうかの判断
  25. 編集・更新機能の実装
  26. コメント削除機能の実装
  27. Navbar の調整
  28. Profile の表示
  29. Profile の編集と更新
  30. パスワードの変更
  31. 管理サイトの準備
  32. 管理ユーザの登録
  33. 管理サイトへのログインとスタッフの登録
  34. グループの追加と権限の付与
  35. 管理サイトに comments アプリケーションを登録
  36. Comments アプリケーションから管理サイトへ

ユーザ認証とコメント掲示板の開発

テストデータの投入

前のページcomments_comment テーブルがデータベースに定義されたので,このテーブルにテストデータを投入しよう.

まず,comments フォルダ内に fixtures フォルダを作成し,その中に comment-data.json ファイルを設置します.次の json データは,user_a (id = 1) と user_b (id = 2) が交互に投稿していることを意味しています.また user_c (id = 3) の投稿はありません.3 個目のコメントにはタグ文字が含まれています.9個目のコメントは10個目のコメントが投稿されたあとに更新されたことになっています.

comments/fixtures/comment-data.json[
    {
        "model": "comments.comment",
        "fields": {
            "title": "最初のコメント (a)",
            "body": "コメントの本文",
            "owner_id": 1,
            "created_at": "2022-07-27T11:01:00.000",
            "updated_at": "2022-07-27T11:01:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "2個目のコメント (b)",
            "body": "コメントの本文2",
            "owner_id": 2,
            "created_at": "2022-07-27T11:02:00.000",
            "updated_at": "2022-07-27T11:02:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "<3個目>のコメント (a)",
            "body": "<h1>コメントの本文3</h1>",
            "owner_id": 1,
            "created_at": "2022-07-27T11:03:00.000",
            "updated_at": "2022-07-27T11:03:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "4個目のコメント (b)",
            "body": "コメントの本文4",
            "owner_id": 2,
            "created_at": "2022-07-27T11:04:00.000",
            "updated_at": "2022-07-27T11:04:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "5個目のコメント (a)",
            "body": "コメントの本文5",
            "owner_id": 1,
            "created_at": "2022-07-27T11:05:00.000",
            "updated_at": "2022-07-27T11:05:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "6個目のコメント (b)",
            "body": "コメントの本文6",
            "owner_id": 2,
            "created_at": "2022-07-27T11:06:00.000",
            "updated_at": "2022-07-27T11:06:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "7個目のコメント (a)",
            "body": "コメントの本文7",
            "owner_id": 1,
            "created_at": "2022-07-27T11:07:00.000",
            "updated_at": "2022-07-27T11:07:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "8個目のコメント (b)",
            "body": "コメントの本文8",
            "owner_id": 2,
            "created_at": "2022-07-27T11:08:00.000",
            "updated_at": "2022-07-27T11:08:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "9個目のコメント (a)",
            "body": "コメントの本文9",
            "owner_id": 1,
            "created_at": "2022-07-27T11:09:00.000",
            "updated_at": "2022-07-27T11:20:00.000"
        }
    },
    {
        "model": "comments.comment",
        "fields": {
            "title": "10個目のコメント (b)",
            "body": "コメントの本文10",
            "owner_id": 2,
            "created_at": "2022-07-27T11:10:00.000",
            "updated_at": "2022-07-27T11:10:00.000"
        }
    }
]

実際にデータベースにテストデータを投入してみよう.

(py39) C:\Users\lecture\Documents\django\django_comment_auth>python manage.py loaddata comments\fixtures\comment-data.json ⏎
Installed 10 object(s) from 1 fixture(s)

(py39) C:\Users\lecture\Documents\django\django_comment_auth>

投入されたデータをデータベースで確認します.

(py39) C:\Users\lecture\Documents\django\django_comment_auth>sqlite3 db.sqlite3 ⏎
SQLite version 3.38.2 2022-03-26 13:51:10
Enter ".help" for usage hints.
sqlite> .headers ON ⏎
sqlite> select * from comments_comment; ⏎
id|title|body|created_at|updated_at|owner_id
1|最初のコメント (a)|コメントの本文|2022-07-27 11:01:00|2022-07-27 11:01:00|1
2|2個目のコメント (b)|コメントの本文2|2022-07-27 11:02:00|2022-07-27 11:02:00|2
3|<3個目>のコメント (a)|<h1>コメントの本文3</h1>|2022-07-27 11:03:00|2022-07-27 11:03:00|1
4|4個目のコメント (b)|コメントの本文4|2022-07-27 11:04:00|2022-07-27 11:04:00|2
5|5個目のコメント (a)|コメントの本文5|2022-07-27 11:05:00|2022-07-27 11:05:00|1
6|6個目のコメント (b)|コメントの本文6|2022-07-27 11:06:00|2022-07-27 11:06:00|2
7|7個目のコメント (a)|コメントの本文7|2022-07-27 11:07:00|2022-07-27 11:07:00|1
8|8個目のコメント (b)|コメントの本文8|2022-07-27 11:08:00|2022-07-27 11:08:00|2
9|9個目のコメント (a)|コメントの本文9|2022-07-27 11:09:00|2022-07-27 11:20:00|1
10|10個目のコメント (b)|コメントの本文10|2022-07-27 11:10:00|2022-07-27 11:10:00|2
sqlite> .exit ⏎

(py39) C:\Users\lecture\Documents\django\django_comment_auth>

次はデータベースから今投入したデータを取り出してコメント一覧ページを実装しよう.

目次に戻る