django - 在 Django Rest Framework 中使用 APIView 和 viewset 设置路由器
问题描述
这是我在 Stackoverflow 上的第一个问题!
我是 Django 的新手,并且正在学习一些教程。
我试图了解是否有办法从不同的视图类(如 APIView 和 viewsets.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
但似乎我可以通过这种方式注册 FileUploadView。因为我没有要呈现的查询集。
我有:AttributeError:类型对象'FileUploadView'没有属性'get_extra_actions'
我意识到(我认为)我可以使用APIView
(FileUploadView
并添加 " .as_view()
)但我认为我也必须重写UniquePostViewSet
usingAPIView
并准确定义我想要在 POST、PUT 等细节中看到的内容......
我的问题是:有没有办法同时使用DefaultRouter
router.register
和插入继承自APIView
(以及继承自的视图viewsets.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
推荐阅读
- android - Hilt:ApplicationComponent 中提供的对象何时被销毁?
- html - HTML & 区分大小写
- c++ - OpenGL Spaceship 推进器在底部不是圆形的
- flutter - 获得异常的 A RenderFlex 在颤动的底部溢出 203 像素
- arduino - Arduino Nano 程序员没有响应
- python - 在 Python 中读取 SQL 文件以通过 databricks 对 JDBC 运行
- azure - Azure PIM PowerShell 脚本
- php - Laravel 授权策略使用微风仅显示用户创建的对象
- swift - 如何在 CGRect 中添加文本标签?
- node.js - 使用 express js 未定义用户名