APIClient

APIClientは Djang の Clientクラスを拡張したもの .get()、.post()、.put()、.pathch()、.delete()、.head()、.options()が利用可能。

例

from rest_framework.test import APIClient

client = APIClient()
client.post('/notes/', {'title': 'new idea'}, format='json')

status

from rest_framework import status 人間が読むことができるステータスコードを含む。 テストの際に理解が簡単 github

refresh_from_db()

モデルのバリューをリフレッシュ使うのに使用。 このメソッドが引数なしで呼ばれると

  1. モデル上の遅延評価されない全てのフィールドはその時点でデータベース上に存在する値に更新されます。
  2. キャッシュされたリレーションはリロードされたインスタンスに削除される。 Django ドキュメント

force_authenticate()

テストする際に強制的に認証をリクエストする

force_authenticate(request, user=None, token=None)が呼ばれる時 user か token のいずれか、または両方を設定できる。

GenericViewSet

GenericViewSet クラスは GenericAPIView の継承し、get_object、get_queryset を提供し、デフォルトでは

GenericViewSetクラスを使用するには、クラスをオーバーライドして、必要なmixinクラスをミックスインするか、アクションの実装を明示的に定義します。

DRF ドキュメント

ModelSerializer

ModelSerializerクラスはSerializer class とモデルの一致するフィールドを自動で作成する

ModelSerializer クラスは Serializer と同じだが、 *モデルを基にフィールドを自動で作成する *unique_together のようなserializerのためのvalidatorを自動で作成する *デフォルトで .create() .update() 含む。

many=True

Serializer クラスは serializing もしくは deserializing のリストオブジェクトを扱える。

serialize する際に many=True を使うことで、queryset もしくはオブジェクトリストをserialize することが出来る。

perform_create

perform_create(self, serializer) は CreateModelMixinが呼ばれたときに新しいオブジェクトを保存する。

PrimaryKeyRelatedField

例

class AlbumSerializer(serializers.ModelSerializer):
    tracks = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = Album
        fields = ['album_name', 'artist', 'tracks']
{
    'album_name': 'Undun',
    'artist': 'The Roots',
    'tracks': [
        89,
        90,
        91,
        ...
    ]
}

DRF ドキュメント

ModelViewSet

ModelViewSet クラスは GenericAPIViewを継承。

ModelViewSet クラスは .list(), .retrieve(), .create(), .update(), partial_update(), .destroy()

DRF ドキュメント