Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django Rest框架中使用APIView和viewset设置路由器_Django_Django Rest Framework_Django Views_Django Urls - Fatal编程技术网

在Django Rest框架中使用APIView和viewset设置路由器

在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

这是我关于Stackoverflow的第一个问题

我是Django的新手,正在学习一些教程

我试图了解是否有一种方法可以从不同的视图类(如APIView和ViewSet.ModelViewSet)设置API的路由(如果我没有使用好的措辞,请告诉我)

在我的视图中:

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