使用django休息框架3.6和django 1.11

时间:2017-10-07 00:53:23

标签: python django django-rest-framework django-1.7 django-1.11

我有一个django 1.7与djangorestframework 3.3.2网站,我正在使用DRF 3.6迁移到django 1.11。除了带网址的路由器外,一切正常。

我的路由器:

router = routers.DefaultRouter()
router.register(r'options', MicrositeViewSet) 

我的网址:

urlpatterns = [
    # '',
    url(r'^api/v1/', include(router.urls)),
]

我的观看次数:

from django.shortcuts import get_object_or_404

from rest_framework import viewsets, mixins
from rest_framework.authentication import SessionAuthentication, TokenAuthentication
from rest_framework.response import Response
from rest_framework.permissions import IsAdminUser

from microsites.permissions import AccountPermission
from microsites.models import Microsite
from microsites.serializers import SelfManagedMicrositeSerializer, MicrositeTestProfileSerializer


class MicrositeViewSet(mixins.UpdateModelMixin,
                       mixins.ListModelMixin,
                       mixins.RetrieveModelMixin,
                       viewsets.GenericViewSet):
    """
    A viewset for viewing and editing microsites.
    """
    authentication_classes = (SessionAuthentication,)
    permission_classes = (AccountPermission,)

    serializer_class = SelfManagedMicrositeSerializer
    queryset = Microsite.objects.all()

    def list(self, request, *args, **kwargs):
        microsite = request.microsite
        account = request.account

        queryset = Microsite.objects.filter(account=account)
        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

    def retrieve(self, request, pk=None):
        queryset = self.get_queryset()
        microsite = get_object_or_404(queryset, api_key=pk)
        self.check_object_permissions(self.request, microsite)
        microsite.pull()
        microsite.set_request_user(request.user)
        serializer = self.get_serializer(
            microsite,
            metadata=request.GET.get('metadata', False),
            categories=request.GET.get('categories', False),
        )
        return Response(serializer.data)

    def update(self, request, pk=None, *args, **kwargs):
        partial = kwargs.pop('partial', False)

        queryset = self.get_queryset()
        microsite = get_object_or_404(queryset, api_key=pk)
        serializer = self.get_serializer(microsite, data=request.data, partial=partial)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)

        return Response(serializer.data)

此代码完全与django 1.7和DRF 3.2一起使用,但在django 1.11和DRF 3.6中不调用路由器的URL。有线索吗?我认为这可能是带引号的router.ulr,但是我说路由器里没有任何urlpatterns。

0 个答案:

没有答案