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

如何为APIView方法自动生成context?自定义DRF APIView实现

自定义DRF APIView自动生成context

DRF原生的APIView不会自动初始化self.context属性,我们可以自定义一个基类,在请求处理的入口逻辑里统一生成context,这样所有子类视图都能直接使用self.context传入序列化器。

自定义基类实现

from rest_framework.views import APIView

class BaseAPIView(APIView):
    def dispatch(self, request, *args, **kwargs):
        # 初始化context,包含序列化器常用的核心参数
        self.context = {
            'request': request,
            'view': self,
            'args': args,
            'kwargs': kwargs
        }
        return super().dispatch(request, *args, **kwargs)

业务视图使用示例

之后你的业务视图直接继承这个BaseAPIView,就能在方法里直接调用self.context:

from rest_framework.response import Response

class SomeView(BaseAPIView):
    def post(self, request):
        ser = SomeSerializer(data=request.data, context=self.context)
        ser.is_valid(raise_exception=True)
        return Response(ser.validated_data)

你可以根据业务需求,在self.context中添加更多自定义字段,比如当前登录用户、额外的配置参数等,序列化器里就能直接通过self.context访问这些数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:59:53