在Django Rest框架中使用APIView和viewset设置路由器
这是我关于Stackoverflow的第一个问题 我是Django的新手,正在学习一些教程 我试图了解是否有一种方法可以从不同的视图类(如APIView和ViewSet.ModelViewSet)设置API的路由(如果我没有使用好的措辞,请告诉我) 在我的视图中:在Django Rest框架中使用APIView和viewset设置路由器,django,django-rest-framework,django-views,django-urls,Django,Django Rest Framework,Django Views,Django Urls,这是我关于Stackoverflow的第一个问题 我是Django的新手,正在学习一些教程 我试图了解是否有一种方法可以从不同的视图类(如APIView和ViewSet.ModelViewSet)设置API的路由(如果我没有使用好的措辞,请告诉我) 在我的视图中: from rest_framework import viewsets from post.models import UniquePost from .serializers import UniquePostSerializers
from rest_framework import viewsets
from post.models import UniquePost
from .serializers import UniquePostSerializers
from rest_framework.views import APIView
class UniquePostViewSet(viewsets.ModelViewSet):
serializer_class = UniquePostSerializers
queryset = UniquePost.objects.all()
class FileUploadView(APIView):
some code here but no queryset nor serialized data...and no model
from post.api.views import UniquePostViewSet
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from post.api.views import FileUploadView
router = DefaultRouter()
router.register('UniquePost', UniquePostViewSet, base_name='uniquepostitem')
router.register('demo', FileUploadView, base_name='file-upload-demo')
urlpatterns = router.urls
在我拥有的URL中:
from rest_framework import viewsets
from post.models import UniquePost
from .serializers import UniquePostSerializers
from rest_framework.views import APIView
class UniquePostViewSet(viewsets.ModelViewSet):
serializer_class = UniquePostSerializers
queryset = UniquePost.objects.all()
class FileUploadView(APIView):
some code here but no queryset nor serialized data...and no model
from post.api.views import UniquePostViewSet
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from post.api.views import FileUploadView
router = DefaultRouter()
router.register('UniquePost', UniquePostViewSet, base_name='uniquepostitem')
router.register('demo', FileUploadView, base_name='file-upload-demo')
urlpatterns = router.urls
但我似乎可以通过这种方式注册FileUploadView。因为我没有要渲染的queryset
我有:AttributeError:type对象“FileUploadView”没有属性“get\u extra\u actions”
我意识到(我想)我可以使用APIView
来查看FileUploadView
(并添加“.as\u view()
”),但我想我必须使用APIView
来重写UniquePostViewSet
,并准确定义我想在POST、PUT等细节中看到的内容
我的问题是:有没有一种方法可以同时使用DefaultRouter
路由器。注册并插入一个从APIView
继承的视图(以及一个从视图集.ModelViewset
继承的视图)
希望所有这些都很清楚,非常感谢您的帮助!!!类似的方法应该会奏效
from post.api.views import UniquePostViewSet
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from post.api.views import FileUploadView
router = DefaultRouter()
router.register('UniquePost', UniquePostViewSet, base_name='uniquepostitem')
urlpatterns = [
path('demo',FileUploadView.as_view(),name='demo'),
]
urlpatterns += router.urls