Python Django 入門トップページ


Django REST Framework による API 開発

  1. API とプロジェクトの概要
  2. Django REST Frameworkのインストール
  3. プロジェクトの作成
  4. 基本設定
  5. アプリケーションの作成と登録
  6. モデルの作成とマイグレーション
  7. テストデータの設定
  8. コメント一覧を出力する API
  9. コメント詳細情報を出力する API
  10. 新規投稿と更新・削除の API
  11. ページネーション
  12. 入力内容の検証(バリデーション)
  13. テストの自動化
  14. Shell でのユーザ登録
  15. Fixtures でのユーザ登録
  16. ユーザ認証を必須にする
  17. コメントにオーナ情報を追加
  18. 権限の設定:Case #1
  19. 権限の設定:Case #2
  20. Python から API への接続
  21. React アプリケーションからの API 接続と CORS エラーの回避

Django REST Framework による API 開発

テストデータの設定

コメントの一覧を取得する前に,まずテスト用のデータをデータベースに登録します.このために comments フォルダに fixtures という名前のフォルダを作成し,その中に comments-data.json ファイルを設置します.このファイルに適当なデータを数件登録します.今回は10件のデータを登録し,created_at(登録日時)が ID の順番になるようにしています.また,updated_at(更新日時)は9番目以外が created_at と同じで,9番目は10番目のコメントが投稿された後に更新されたことになるように設定しています.また,3番目のコメントの本文には HTML タグを入力しています.

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

テストデータをデータベースに登録します.このとき Windows 環境でのフォルダの区切りには円マーク(この Web ページでの表示上はバックスラッシュ (\))を利用します.Mac や Linux ではスラッシュ (/) を利用します.

...\django_comment_api>python manage.py loaddata comments\fixtures\comments-data.json ⏎
Installed 10 object(s) from 1 fixture(s)

...\django_comment_api>

次に,SQLite を操作して,データが登録されていることを確認します.なお,.headers ONSELECT による検索結果で列名を表示させるためのコマンドです.SQLite の主要コマンドはこちらを参照してください.

...\django_comment_api>sqlite3 db.sqlite3 ⏎
SQLite version 3.40.1 2022-12-28 14:03:47
Enter ".help" for usage hints.
sqlite> .headers ON ⏎
sqlite> .tables ⏎
auth_group                  comments_comment
auth_group_permissions      django_admin_log
auth_permission             django_content_type
auth_user                   django_migrations
auth_user_groups            django_session
auth_user_user_permissions
sqlite> select * from comments_comment; ⏎
id|title|body|created_at|updated_at
1|最初のコメント|コメントの本文|2023-11-23 11:01:00|2023-11-23 11:01:00
2|2個目のコメント|コメントの本文2|2023-11-23 11:02:00|2023-11-23 11:02:00
3|<3個目>のコメント|<h1>コメントの本文3</h1>|2023-11-23 11:03:00|2023-11-23 11:03:00
4|4個目のコメント|コメントの本文4|2023-11-23 11:04:00|2023-11-23 11:04:00
5|5個目のコメント|コメントの本文5|2023-11-23 11:05:00|2023-11-23 11:05:00
6|6個目のコメント|コメントの本文6|2023-11-23 11:06:00|2023-11-23 11:06:00
7|7個目のコメント|コメントの本文7|2023-11-23 11:07:00|2023-11-23 11:07:00
8|8個目のコメント|コメントの本文8|2023-11-23 11:08:00|2023-11-23 11:08:00
9|9個目のコメント|コメントの本文9|2023-11-23 11:09:00|2023-11-23 11:20:00
10|10個目のコメント|コメントの本文10|2023-11-23 11:10:00|2023-11-23 11:10:00
sqlite>

ここまでの作業は以前に作成したコメント掲示板の開発「テストデータの設定」までの手順とほとんど変わりありませんでした.次のページではいよいよ API を作成します.

目次に戻る