码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-10-29 21:36:08      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:ESS   self   ges   users   weight   art   none   framework   序列   

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参数

 

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

标签:ESS   self   ges   users   weight   art   none   framework   序列   

原文地址:https://www.cnblogs.com/yushengzhou/p/9873140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!