You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django POST请求报错:.accepted_renderer not set on Response 求助

解决Django DRF中POST请求触发.accepted_renderer not set on Response的AssertionError

这个错误的核心是返回的Response对象未经过DRF的渲染流程处理,导致accepted_renderer属性未被正确绑定。结合你的场景,按以下步骤排查:

1. 检查视图返回的Response类型

确认视图的create、perform_create或其他自定义方法中,是否误用了Django原生的django.http.Response而非DRF的rest_framework.response.Response。DRF的Response类会自动处理渲染器绑定逻辑,原生Response则不会。

错误示例:

from django.http import Response

class ItemAPIView(CSRFEnabledApiViewMixin, CreateAPIView, RetrieveUpdateDestroyAPIView):
    def perform_create(self, serializer):
        instance = serializer.save()
        return Response({"id": instance.id})

修正写法:

from rest_framework.response import Response

class ItemAPIView(CSRFEnabledApiViewMixin, CreateAPIView, RetrieveUpdateDestroyAPIView):
    def perform_create(self, serializer):
        instance = serializer.save()
        return Response({"id": instance.id})

2. 排查CSRFEnabledApiViewMixin的实现

自定义的CSRFEnabledApiViewMixin可能重写了DRF APIView的关键方法(比如finalize_response)但未调用父类方法,打断了DRF的渲染流程。

检查mixin代码,如果存在类似错误实现:

class CSRFEnabledApiViewMixin:
    def finalize_response(self, request, response, *args, **kwargs):
        # 仅处理CSRF逻辑,未调用父类方法
        response["X-CSRFToken"] = request.COOKIES.get("csrftoken")
        return response

必须补充调用父类方法,确保DRF完成渲染器设置:

class CSRFEnabledApiViewMixin:
    def finalize_response(self, request, response, *args, **kwargs):
        # 先执行DRF核心流程
        response = super().finalize_response(request, response, *args, **kwargs)
        # 再添加自定义CSRF逻辑
        response["X-CSRFToken"] = request.COOKIES.get("csrftoken")
        return response

3. 临时移除自定义mixin验证

暂时将视图改为仅继承DRF基类:

class ItemAPIView(CreateAPIView, RetrieveUpdateDestroyAPIView):
    # 保留原有其他代码

测试POST请求是否恢复正常。如果正常,说明问题确实出在CSRFEnabledApiViewMixin中,回到步骤2继续排查。

4. 确认DRF版本兼容性

检查你的Django REST Framework版本是否与Django 3.2.15兼容,DRF 3.12.x及以上版本支持Django 3.2,过低版本可能存在流程冲突。


内容的提问来源于stack exchange,提问作者Artem Liubymov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:10:01