self.user = serializer_field.context['request'].user KeyError: 'request

django DRF:

APIView和通用API的细节区别:

 

 使用CurrentUserDefault()时报错:

user = serializers.HiddenField(
default=serializers.CurrentUserDefault()

 报错如下:

File "C:\Users\sz.yu\Envs\Smartshop\lib\site-packages\rest_framework\fields.py", line 271, in set_context 

self.user = serializer_field.context['request'].user 

KeyError: 'request'

 

这是因为我使用的APIView而不是GenericAPIView(GenericAPIView会自动对context处理,而APIView不会) 

所有视图中序列化应该这样写:

def post(self, request, format=None):
context = {
"request":request,
}
serializer = UserMessageCreateSerializer(data=request.data, context=context)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response(serializer.data, status=HTTP_201_CREATED, content_type="application/json")

 额外传递 context=context参数

 

转载于:https://www.cnblogs.com/yushengzhou/p/9873140.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值