python - 在 django RestFramework 中的同一 View 中使用通用 createapiview 和 updateapiview

标签 python django django-rest-framework django-generic-views

我试图找出是否可以使用 Django Rest 框架中的通用 api 方法在同一 View 中发布和修补。我不认为有任何通用类允许完全创建和更新,任何人都可以告诉我下面的配置是否允许我在同一 View 中使用 post 和 patch 方法。

class QuestionList(generics.updateAPIView, generics.CreateAPIView):
    queryset = Question.objects.all()
    serializer_class = QuestionSerializer

最佳答案

我不确定这是否可能,但是,您可以创建两个这样的 View

class CreateSomeView(AuthenticatedView, CreateAPIView):

    queryset = Some.objects.all()
    serializer_class = SomeSerializer

    def create(self, request):
        serializer = self.serializer_class(data=data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

 class SomeView(AuthenticatedView, UpdateAPIView):

    queryset = Some.objects.all()
    serializer_class = SomeSerializer

    def update(self, request, *args, **kwargs):
        serializer = self.serializer_class(data=data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

和两个类似的网址

path('some/', CreateSomeView.as_view(), name="create-some-details"),
path('some/<int:pk>/', SomeView.as_view(), name="some-details"),

现在,如果您想更新,您可以从前端发送请求;如果您想创建新的,您可以发送不带 ID 的请求。您不必创建两个序列化器。

关于python - 在 django RestFramework 中的同一 View 中使用通用 createapiview 和 updateapiview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55175166/

相关文章:

python - 是否可以单独使用 Django 管理创建面向最终用户的站点?

python - 我不明白 Python 中的负边界切片。这应该如何工作?

mysql - 在 Django 中,尝试转储数据时得到 "Error: Unable to serialize database"?

python - 如果未找到 Django REST Framework 的详细信息,如何修改 ModelViewSet 类中的错误响应?

python - 如何验证 Django REST Framework 序列化程序中的所有相关字段都指定具有相同所有者的对象?

python - 如何使用 django rest 框架建立一对多的嵌套关系?

python - PIL 可以用于获取 svg 文件的尺寸吗?

python - beautifulsoup select 方法返回回溯

django - 在 Django/DRF 中正确处理日期时间/时区

mysql - 什么是 SELECT col1 FROM table WHERE col2=somestring 的 Django ORM 等价物?