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()
モデルのバリューをリフレッシュ使うのに使用。 このメソッドが引数なしで呼ばれると
- モデル上の遅延評価されない全てのフィールドはその時点でデータベース上に存在する値に更新されます。
- キャッシュされたリレーションはリロードされたインスタンスに削除される。 Django ドキュメント
force_authenticate()
テストする際に強制的に認証をリクエストする
force_authenticate(request, user=None, token=None)が呼ばれる時 user か token のいずれか、または両方を設定できる。
GenericViewSet
GenericViewSet クラスは GenericAPIView の継承し、get_object、get_queryset を提供し、デフォルトでは
GenericViewSetクラスを使用するには、クラスをオーバーライドして、必要なmixinクラスをミックスインするか、アクションの実装を明示的に定義します。
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,
...
]
}
ModelViewSet
ModelViewSet クラスは GenericAPIViewを継承。
ModelViewSet クラスは .list(), .retrieve(), .create(), .update(), partial_update(), .destroy()