Wagtail - DRF Response() 而不是 JsonResponse()

问题描述 投票:0回答:1

我使用 Wagtail 作为无头 CMS / API,但是我没有使用 PagesAPIViewSet,而是按照此处所述重写了serve()方法来获取页面: https://docs.wagtail.org/en/stable/reference/contrib/routablepage.html

这非常有效,因为我可以返回 JsonResponse。问题是(据我所知),调试工具栏仅适用于标准休息框架 Response(),所以我试图找到一种方法来返回 DRF 响应。

我收到的错误是“.accepted_renderer not set on Response” 我将如何设置接受的渲染器? 这大概就是我所得到的:

from rest_framework.response import Response
from wagtail.core.models import Page

class BasePage(Page, RoutablePageMixin):
    ....
    
    def serve(self, request, *args, **kwargs):
       context = self.get_context(request, *args, **kwargs) # Context where I serialize data to JSON etc.
       return Response(data=context['data'], status=status.HTTP_200_OK) ##Throws error, with JsonResponse() it works fine.
django-rest-framework wagtail wagtail-apiv2
1个回答
0
投票

您可以尝试模拟页面视图,然后返回该页面视图的响应。

class BasePage(Page, RoutablePageMixin):
   ...

   def serve(self, request, *args, **kwargs):
       context = self.get_context(request, *args, **kwargs)
       
       @api_view(['GET'])
       def view(request):
           return Response(data=context['data'], status=status.HTTP_200_OK)
       return view(request)
© www.soinside.com 2019 - 2024. All rights reserved.