Django REST Framework - Views
Mon_Nov_23
.
.
.
今日から本格的にDRFを勉強することになりました.
実は以前からいくつかの報告がありましたが、方向も見つからず、就職準備と並行していました.
ちょっと疲れたので、現職の開発者の友人がガイドをしてくれることにしました.
まず、次の印刷の前に、APIガイドカテゴリの7種類のドキュメントをDjango Rest Frameworkで学習することにした. Views Generic views Viewsets Routers Serializers Serializer fields Serializer relations あまり時間がないので、ないかもしれませんが、散布は初めてなので、とりあえずこのように勉強することにしました.
ブログを書く理由は、対応するドキュメントを翻訳し、自分なりに簡単に書くことです.このようにしてこそ、後で便利に参考にすることができ、長く記憶に残ることができるからです.
Class-based Views
RESTフレームワークはDjangoのViewクラスをサブクラスとするAPI viewクラスを提供する.
APIViewクラスは、通常のビュークラスとは次の点で異なります.
Handlerメソッドに渡されるリクエストはDjangoのHttpRequestインスタンスではなく、RESTフレームワークのRequestインスタンスです.
Handler法はDjangoのHttpResponseではなくRESTフレームワークの応答を返すことができる.ビューはコンテンツ交渉を管理し、応答に正しいレンダラーを設定します.
すべてのAPIException例外をキャプチャし、適切な応答に調整します.
受信された要求は検証され、要求がプロセッサ・メソッドに送信される前に適切な権限および/または制限チェックが実行されます.
APIViewクラスの使用は、通常のビュークラスの使用とほぼ同じであり、受信されたリクエストはです.get()または.post()などの適切なプロセッサメソッドに渡されます.
また、APIポリシーの様々な態様を制御する複数の属性をクラスに設定することもできます.
例)
次のプロパティは、APIビューの挿抜可能な側を制御します.
.renderer_classes
.parser_classes
.authentication_classes
.throttle_classes
.permission_classes
.content_negotiation_class
API policy instantiation methods
以下の方法は、RESTフレームワークにおいて、様々な挿抜可能なAPIポリシーをインスタンス化するために使用される.通常、これらのメソッドを再定義する必要はありません.
.get_renderers(self)
.get_parsers(self)
.get_authenticators(self)
.get_throttles(self)
.get_permissions(self)
.get_content_negotiator(self)
.get_exception_handler(self)
API policy implementation methods
Handlerメソッドを使用して派遣する前に、次のメソッドが呼び出されます.
.check_permissions(self, request)
.check_throttles(self, request)
.perform_content_negotiation(self, request, force=False)
Dispatch methods
次の方法は、ビューにあります.dispatch()メソッドは直接呼び出されます.
.get (), .post()、put()、patch()および.delete()などの呼び出しハンドラメソッドの前または後に実行する必要があるすべての操作を実行します.
.initial(self, request, *args, **kwargs)
Handlerメソッドを呼び出す前に実行しなければならないすべての操作を実行します.このメソッドは、権限と制限を適用し、コンテンツの交渉に使用します.
通常、このメソッドを再定義する必要はありません.
.handle_exception(self, exc)
Handlerメソッドによって生成されたすべての例外がこのメソッドに渡され、応答インスタンスまたは再励起例外が返されます.
デフォルトではrest frameworkとして実装されます.exceptions.APIExceptionのすべてのサブクラスおよびDjangoのHttp 404およびPermissionDenied異常を処理し、適切なエラー応答を返す.
APIが返すエラーレスポンスをカスタマイズする必要がある場合は、このメソッドをサブクラスとして作成する必要があります.
.initialize_request(self, request, *args, **kwargs)
Handlerメソッドに渡されるリクエスト・オブジェクトが、インスタンスHttpRequestではなく通常のDjangoをリクエストするものであることを確認します.
通常、このメソッドを再定義する必要はありません.
.finalize_response(self, request, response, *args, **kwargs)
レスポンスプロセッサメソッドで返されるすべてのオブジェクトが、コンテンツ交渉で決定された正しいコンテンツフォーマットでレンダリングされることを確認します.
通常、このメソッドを再定義する必要はありません.
.
.
.
今日から本格的にDRFを勉強することになりました.
実は以前からいくつかの報告がありましたが、方向も見つからず、就職準備と並行していました.
ちょっと疲れたので、現職の開発者の友人がガイドをしてくれることにしました.
まず、次の印刷の前に、APIガイドカテゴリの7種類のドキュメントをDjango Rest Frameworkで学習することにした.
ブログを書く理由は、対応するドキュメントを翻訳し、自分なりに簡単に書くことです.このようにしてこそ、後で便利に参考にすることができ、長く記憶に残ることができるからです.
Class-based Views
RESTフレームワークはDjangoのViewクラスをサブクラスとするAPI viewクラスを提供する.
APIViewクラスは、通常のビュークラスとは次の点で異なります.
Handlerメソッドに渡されるリクエストはDjangoのHttpRequestインスタンスではなく、RESTフレームワークのRequestインスタンスです.
Handler法はDjangoのHttpResponseではなくRESTフレームワークの応答を返すことができる.ビューはコンテンツ交渉を管理し、応答に正しいレンダラーを設定します.
すべてのAPIException例外をキャプチャし、適切な応答に調整します.
受信された要求は検証され、要求がプロセッサ・メソッドに送信される前に適切な権限および/または制限チェックが実行されます.
また、APIポリシーの様々な態様を制御する複数の属性をクラスに設定することもできます.
例)
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import authentication, permissions
from django.contrib.auth.models import User
class ListUsers(APIView):
"""
View to list all users in the system.
* Requires token authentication.
* Only admin users are able to access this view.
"""
authentication_classes = [authentication.TokenAuthentication]
permission_classes = [permissions.IsAdminUser]
def get(self, request, format=None):
"""
Return a list of all users.
"""
usernames = [user.username for user in User.objects.all()]
return Response(usernames)
API policy attributes次のプロパティは、APIビューの挿抜可能な側を制御します.
.renderer_classes
.parser_classes
.authentication_classes
.throttle_classes
.permission_classes
.content_negotiation_class
API policy instantiation methods
以下の方法は、RESTフレームワークにおいて、様々な挿抜可能なAPIポリシーをインスタンス化するために使用される.通常、これらのメソッドを再定義する必要はありません.
.get_renderers(self)
.get_parsers(self)
.get_authenticators(self)
.get_throttles(self)
.get_permissions(self)
.get_content_negotiator(self)
.get_exception_handler(self)
API policy implementation methods
Handlerメソッドを使用して派遣する前に、次のメソッドが呼び出されます.
.check_permissions(self, request)
.check_throttles(self, request)
.perform_content_negotiation(self, request, force=False)
Dispatch methods
次の方法は、ビューにあります.dispatch()メソッドは直接呼び出されます.
.get (), .post()、put()、patch()および.delete()などの呼び出しハンドラメソッドの前または後に実行する必要があるすべての操作を実行します.
.initial(self, request, *args, **kwargs)
Handlerメソッドを呼び出す前に実行しなければならないすべての操作を実行します.このメソッドは、権限と制限を適用し、コンテンツの交渉に使用します.
通常、このメソッドを再定義する必要はありません.
.handle_exception(self, exc)
Handlerメソッドによって生成されたすべての例外がこのメソッドに渡され、応答インスタンスまたは再励起例外が返されます.
デフォルトではrest frameworkとして実装されます.exceptions.APIExceptionのすべてのサブクラスおよびDjangoのHttp 404およびPermissionDenied異常を処理し、適切なエラー応答を返す.
APIが返すエラーレスポンスをカスタマイズする必要がある場合は、このメソッドをサブクラスとして作成する必要があります.
.initialize_request(self, request, *args, **kwargs)
Handlerメソッドに渡されるリクエスト・オブジェクトが、インスタンスHttpRequestではなく通常のDjangoをリクエストするものであることを確認します.
通常、このメソッドを再定義する必要はありません.
.finalize_response(self, request, response, *args, **kwargs)
レスポンスプロセッサメソッドで返されるすべてのオブジェクトが、コンテンツ交渉で決定された正しいコンテンツフォーマットでレンダリングされることを確認します.
通常、このメソッドを再定義する必要はありません.
Reference
この問題について(Django REST Framework - Views), 我々は、より多くの情報をここで見つけました https://velog.io/@minho/Django-REST-Framework-Viewsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol