Django REST Frameworkでアプリケーション開発 ~ Blog API~

こんにちは。KOUKIです。

前回の続きです。本日は、Blog APIを作成します。

記事まとめ

Blog Modelの作成とテスト

Blog Modelを作成します。

まずは、テストコードを書きます。

Blogが作成されたとき、Titleが文字列として取得できるかについてテストします。

テストを実行します。

Blog Modelがないため、エラーになりました。

Blog Modelを作成しましょう。

Blogモデルを追加しましたので、マイグレーションを実行しましょう。

テストを実行します。

テストに成功しましたので、管理画面からBlogを追加できるようにadmin.pyを修正します。

Blog Modelテスト

Blog Modelテストを追加します。

テストの意味については次の通りです。

  • #1 -> 未ログインユーザーがアクセスした場合、401エラーを返す
  • #2 -> ログイン済みのユーザーがアクセスした場合、Blogリストを返す
  • #3 -> ログイン済みのユーザーに関連するBlog情報を返す

テストを実行しましょう。

BlogSerializerが未定義のため、エラーになりました。

BlogSerializerを定義してみましょう。

テストを実行します。

「BLOGS_URL = reverse(‘blog:blog-list’)」でエラーが出てますね。

urls.pyにパスを追加しましょう。

テストを実行します。

BlogViewSetを設定していないので、エラーがでました。

blogアプリのviews.pyに以下を追加しましょう。

テストを実行します。

Blog詳細情報の取得

続いて、Blogの詳細情報を取得する処理を実装します。

最初は、テストコードからです。

Blogの詳細が取得できるかのテストを追加しました。

テストを実行します。

BlogDetailSerializerはまだ設定していないため、エラーになりました。

BlogDetailSerializerをserializers.pyに追加します。

テストを実行します。

シリアライズしていないので、エラーが発生しているようです。

views.pyのBlogViewSetクラスに次の関数を追加します。

テストを実行します。

Blog作成

次は、Blogの作成です。

テストコードを書きましょう。

「Blog単体およびタグやコメント付きで作成できるか」についてテストします。

テストを実行します。

エラーになりましたね。

沢山エラーがでるため、エラー詳細については省略させていただきます。

views.pyのBlogViewSetクラスに次の関数を追加しましょう。

テストを実行します。

OKですね。

Blog更新

続いて、Blog更新処理を実装します。

まずは、テストコードですね。

HTTPメソッドのpatchとputは、次の特性を持ちます。

  • patch -> リソースを部分更新するメソッド
  • put -> リソースを更新するメソッド

それぞれのメソッドを用いて、Blog更新テストを行います。

「blog.refresh_from_db()」は、データベース更新用の関数です。patchやputでデータ変更を有効にします。

テストを実行します。

テストがパスしました。

次回

次回は、Media / Filter APIを作成します。

関連記事

基礎編はこちらです。

参考書籍

コメントを残す