如何为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
相关产品推荐
相关产品推荐

