ジャンゴ・静止フレームワークのビュー
GenericView
class GenericView(GenericAPIView):
queryset = models.Role.objects.all()
serializer_class = serializers.RoleSerializer
pagination_class = PageNumberPagination
def get(self, request):
# 获取数据
data = self.get_queryset()
# 获取分页数据
page_data = self.paginate_queryset(data)
# 获取序列化数据
resp = self.get_serializer(instance=page_data, many=True)
return Response(resp.data)
- 元のパッケージApiViewにほとんどないGenericView、使用三つの主要な方法があります
get_queryset
:クエリセットオブジェクトのクエリを取得します。paginate_queryset
:、ページの後のオブジェクトを取得しますが、パラメータオブジェクトを受け入れる必要があるクエリセットget_serializer
:直列化されたデータを、シリアライズされたオブジェクトの開発と多くのパラメータの開発
GenericViewSet
class GenericView(GenericViewSet):
def list(self, request):
return Response('list')
from django.conf.urls import re_path
from . import views
urlpatterns = [
re_path(r'^index/', views.GenericView.as_view({'get': 'list'})),
]
- GenericViewSet GenericViewは、実質的に差がないと使用、対応する要求方法の唯一の機能は、カスタムを必要
- URL as_viewメソッドは、パラメータ辞書を渡す必要があり、辞書はリクエストメソッドに対応するキーで、値が要求ハンドラメソッドに対応しています
ModelViewSet
class GenericView(ModelViewSet):
queryset = models.Role.objects.all()
serializer_class = serializers.RoleSerializer
pagination_class = PageNumberPagination
- ModelViewSetは、より多くの先輩、調査の方法のデフォルト実装への追加や削除は、それだけに対応する属性を設定する必要があります
URL
from django.conf.urls import re_path
from . import views
urlpatterns = [
re_path(r'^index/', views.GenericView.as_view({'get': 'list', 'post': 'update'})),
]
自動経路生成
from django.urls import path, include, re_path
from rest_framework import routers
from . import views
route = routers.DefaultRouter()
route.register('index', views.GenericView)
urlpatterns = [
re_path('', include(route.urls))
]