我有一个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。