Serialization self.context中的django rest框架密钥错误请求
即使我将请求传递给序列化程序,我也会收到密钥错误请求。 我的代码如下所示: 我也尝试过Serialization self.context中的django rest框架密钥错误请求,serialization,django-rest-framework,Serialization,Django Rest Framework,即使我将请求传递给序列化程序,我也会收到密钥错误请求。 我的代码如下所示: 我也尝试过self.context.get('request'),但也不起作用。 我想通过视图将agentId设置为当前user.id,而不是通过api呈现的html表单手动获取它 序列化程序.py class LoanAgentSerializer(serializers.ModelSerializer): agentId = serializers.SerializerMethodField() c
self.context.get('request')
,但也不起作用。
我想通过视图将agentId
设置为当前user.id
,而不是通过api呈现的html表单手动获取它
序列化程序.py
class LoanAgentSerializer(serializers.ModelSerializer):
agentId = serializers.SerializerMethodField()
class Meta:
model = Loan
fields='__all__'
read_only_fields=['agentId','state']
def get_agentId(self,obj):
agentId = self.context["request"].user.id
return agentId
views.py
class AgentLoanView(APIView):
permission_classes=(IsAuthenticated,)
serializer_class=LoanAgentSerializer
def post(self,request):
user=request.user
if user.role==2:
serializer=self.serializer_class(data=request.data,context={'request':request})
valid=serializer.is_valid(raise_exception=True)
if valid:
serializer.save()
status_code=status.HTTP_200_OK
response = {
'success': True,
'status_code': status_code,
'message': 'Successfully created loan request',
'loan': serializer.data,
}
return Response(response,status=status_code)
return Response(status=status.HTTP_401_UNAUTHORIZED)
models.py
class Loan(models.Model):
STATES=[
('New', 'New'),
('Approved', 'Approved'),
('Rejected', 'Rejected'),
]
customerId=models.ForeignKey(User,on_delete=models.CASCADE,related_name='customer')
agentId=models.ForeignKey(User,on_delete=models.CASCADE,related_name='agent')
state=models.CharField(max_length=10,choices=STATES,default='New')
amount_required = models.IntegerField()
tenure=models.IntegerField()
interest=models.FloatField()
内部服务器错误:/loanManagement/auth/agent/loan
回溯(最近一次呼叫最后一次):
文件“D:\projects\loan\venv\lib\site packages\django\core\handlers\exception.py”,第47行,在内部
响应=获取响应(请求)
文件“D:\projects\loan\venv\lib\site packages\django\core\handlers\base.py”,第179行,在\u get\u响应中
响应=包装的回调(请求,*回调参数,**回调参数)
文件“D:\projects\loan\venv\lib\site packages\django\views\decorators\csrf.py”,第54行,在包装视图中
返回视图函数(*args,**kwargs)
文件“D:\projects\loan\venv\lib\site packages\django\views\generic\base.py”,第70行,在视图中
返回自调度(请求,*args,**kwargs)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\views.py”,第509行,已发送
响应=自身处理异常(exc)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\views.py”,第469行,在handle\u exception中
自举未捕获异常(exc)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\views.py”,第480行,位于raise\u uncaught\u异常中
加薪
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\views.py”,第506行,已发送
响应=处理程序(请求、*args、**kwargs)
get中第178行的文件“D:\projects\loan\loanManagement\views.py”
“贷款”:serializer.data,
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第745行,在数据中
ret=super().data
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第246行,在数据中
self.\u data=self.to\u表示(self.instance)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第663行,以to\U表示
返回[
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第664行,在
iterable中项的self.child.to_表示(项)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\serializers.py”,第515行,以to\U表示
ret[field.field\u name]=field.to\u表示(属性)
文件“D:\projects\loan\venv\lib\site packages\rest\u framework\fields.py”,第1870行,以to\u表示
返回方法(值)
get\U agentId中第88行的文件“D:\projects\loan\loanManagement\serializers.py”
agentId=self.context[“请求”].user.id
KeyError:“请求”
Internal Server Error: /loanManagement/auth/agent/loan
Traceback (most recent call last):
File "D:\projects\loan\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "D:\projects\loan\venv\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\projects\loan\venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "D:\projects\loan\venv\lib\site-packages\django\views\generic\base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "D:\projects\loan\venv\lib\site-packages\rest_framework\views.py", line 509, in dispatch
response = self.handle_exception(exc)
File "D:\projects\loan\venv\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "D:\projects\loan\venv\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
raise exc
File "D:\projects\loan\venv\lib\site-packages\rest_framework\views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "D:\projects\loan\loanManagement\views.py", line 178, in get
'loans': serializer.data,
File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 745, in data
ret = super().data
File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 246, in data
self._data = self.to_representation(self.instance)
File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 663, in to_representation
return [
File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 664, in <listcomp>
self.child.to_representation(item) for item in iterable
File "D:\projects\loan\venv\lib\site-packages\rest_framework\serializers.py", line 515, in to_representation
ret[field.field_name] = field.to_representation(attribute)
File "D:\projects\loan\venv\lib\site-packages\rest_framework\fields.py", line 1870, in to_representation
return method(value)
File "D:\projects\loan\loanManagement\serializers.py", line 88, in get_agentId
agentId = self.context["request"].user.id
KeyError: 'request'