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 開発

コメント詳細情報を出力する API

次に,ID を指定してそのコメントの詳細情報を表示(出力)する機能を作成します.このために,views.py に CommentDetail クラスを定義します.このクラスの定義は CommentList クラスとほぼ同じで,違いは ListAPIView を継承するか RetrieveAPIView を継承するかという部分だけです.

comments\views.py
from django.shortcuts import render
from rest_framework import generics
from .models import Comment
from .serializers import CommentSerializer

# Create your views here.

class CommentList(generics.ListAPIView):
    queryset = Comment.objects.all()
    serializer_class = CommentSerializer

class CommentDetail(generics.RetrieveAPIView):
    queryset = Comment.objects.all()
    serializer_class = CommentSerializer

URL に /comments/1/ のように ID を指定すると詳細情報が得られるように urls.py にそのルートを定義します.

comments\urls.py
from django.urls import path
from comments import views

urlpatterns = [
    path('comments/', views.CommentList.as_view()),
    path('comments/<int:pk>/', views.CommentDetail.as_view()),
]

Web サーバを起動したままであっても urls.py などを保存すると自動的に再起動されているはずです.停止していた場合には python manage.py runserver で Web サーバを起動します.その後,別のコマンドプロンプトから接続します.

...\django_comment_api>curl http://127.0.0.1:8000/comments/1/ ⏎
{"id":1,"title":"最初のコメント","body":"コメントの本文","updated_at":"2023-11-23T11:01:00"}
...\django_comment_api>curl http://127.0.0.1:8000/comments/2/ ⏎
{"id":2,"title":"2個目のコメント","body":"コメントの本文2","updated_at":"2023-11-23T11:02:00"}
...\django_comment_api>curl http://127.0.0.1:8000/comments/100/ ⏎
{"detail":"見つかりませんでした。"}
...\django_comment_api>

Web ブラウザからでも正しく詳細情報が得られていることを確認します.

django-api-2023-04

目次に戻る