django - 如何以编程方式在另一个 View 中调用 Django Rest Framework View ?

标签 django django-rest-framework

我有以下使用 Django Rest 框架 (DRF) 构建的基于通用类的 View

class ExampleDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Example.objects.all()
    serializer_class = ExampleSerializer
    renderer_classes = (JSONRenderer, TemplateHTMLRenderer)

    def get(self, request, *args, **kwargs):

        response = self.retrieve(request, *args, **kwargs)
        if request.accepted_renderer.format == 'html':
            form = ExampleForm(data=response.data)
            return Response({'data': response.data, 'form': form}, template_name='example.html')

        return response

此 View 允许我通过指定 format=json 或 html 从同一端点获取 JSON 数据或 HTML 表单。

我想以编程方式调用该 View 以从另一个 View 中获取呈现的 HTML 表单,以便将此表单包含在另一个包含更多内容的页面中。

最佳答案

我在文档中找到了解决方案... https://docs.djangoproject.com/en/4.1/ref/class-based-views/mixins/

提示来自他们的示例:

class AuthorDetail(View):

    def get(self, request, *args, **kwargs):
        view = AuthorDisplay.as_view()
        return view(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        view = AuthorInterest.as_view()
        return view(request, *args, **kwargs)

关于django - 如何以编程方式在另一个 View 中调用 Django Rest Framework View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790981/

相关文章:

django - 如何解析 DRF 序列化程序中的字符串列表查询参数?

python - manage.py:错误:无法识别的参数:runserver 8000,Google Analytics API Django

Django Allauth 如何更改用户名=名字?

python - 在模板中使用 slugify

Django ORM 如何引用查询中的另一行?

django - 调用create()时`TypeError`。您可能需要将字段设置为只读,或覆盖create()方法

python - DRF-Django URL 过滤器-RelatedFieldError

html - 如何摆脱 URL 中的 "%20"代码 (django)

python - Django 使用序列化器在 Restframework 中进行 API 调用的一对多关系

python - 具有不同类型问题的 Django 测验应用程序