엔드 포인트에 가입하세요 추가 :장고 나머지 프레임 워크 내가 다음과 같은 엔드 포인트를 가지고 장고 나머지 프레임 워크 (DRF)와 REST API를 만들고있어
/users/
/users/<pk>/
/items/
/items/<pk>/
하지만 엔드 포인트 추가 할 :
을/users/<pk>/items/
물론이 항목은 외래 키가있는 항목을 해당 사용자에게 반환합니다.
현재 내 코드입니다 : 내가 DRF를 사용하고 어떻게
#########################
##### myapp/urls.py #####
#########################
from django.conf.urls import url, include
from rest_framework.routers import DefaultRouter
from rest_framework.decorators import api_view, renderer_classes
from rest_framework import response, schemas
from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer
from myapp.views import ItemViewSet, UserViewSet
# Create a router and register our viewsets with it.
router = DefaultRouter()
router.register(r'users', UserViewSet)
router.register(r'items', ItemViewSet)
@api_view()
@renderer_classes([OpenAPIRenderer, SwaggerUIRenderer])
def schema_view(request):
generator = schemas.SchemaGenerator(title='My API')
return response.Response(generator.get_schema(request=request))
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
##########################
##### myapp/views.py #####
##########################
from django.contrib.auth import get_user_model
from rest_framework import viewsets, permissions
from myapp.serializers import MyUserSerializer, ItemSerializer
from myapp.models import Item
class UserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = get_user_model().objects.all()
serializer_class = MyUserSerializer
permission_classes = (permissions.IsAuthenticated,)
class ItemViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Item.objects.all()
serializer_class = ItemSerializer
permission_classes = (permissions.IsAuthenticated,)
################################
##### myapp/serializers.py #####
################################
from rest_framework import serializers
from django.contrib.auth import get_user_model
from myapp.models import Item
class MyUserSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = ('pk', 'email',)
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('pk', 'name',)
DRF에서이 엔드 포인트를 추가 할 수있는 좋은 방법이 주어진 있습니까?
from myapp.views import items_for_user
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^users/(?P<pk>[0-9]+)/items/$', items_for_user),
]
하지만, DRF를 활용 탐색 가능한 API를 얻고, 같은 일회성 기능 뷰 코딩의 ViewSet
의 사용을 대신 만들고 싶어 :
난 그냥과 같이 urls.py
의 기능보기를 추가 할 수 있습니다 이.
아이디어가 있으십니까?