send_push_message()缺少4个必需的位置参数:'token','title','message'和'extra'(代码片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了send_push_message()缺少4个必需的位置参数:'token','title','message'和'extra'(代码片相关的知识,希望对你有一定的参考价值。

我一直收到这个错误:send_push_message()缺少4个必需的位置参数:'token','title','message'和'extra',我该怎么办?

def receive_request(request, self):
    self.token = request.data['token']
    self.title = request.data['title']
    self.message = request.data['message']
    self.extra = request.data['extra']

@api_view(["POST"])
@permission_classes((AllowAny, ))
def send_push_message(self, token, title, message, extra):
    token =  self.token   
    title = self.title 
    message = self.message 
    extra = self.extra
    #it continues from here
答案

在Django Rest Framework中,基于函数的视图应该接受request作为第一个参数,然后任何其他参数需要通过视图的url定义中的正则表达式捕获来定义。有关更多信息,请参阅此文档:http://www.django-rest-framework.org/api-guide/views/#function-based-views

看起来您获得的数据来自请求正文。请注意,要将参数传递给视图函数,需要在url中定义它们,而不是请求有效负载。考虑到这一点,以下是您重构代码的方法:

import json

@api_view(["POST"])
@permission_classes((AllowAny, ))
def send_push_message(request):
    data = json.loads(request.body)
    token =  data.get('token')
    title = data.get('title')
    message = data.get('message')
    extra = data.get('extra')

以上是关于send_push_message()缺少4个必需的位置参数:'token','title','message'和'extra'(代码片的主要内容,如果未能解决你的问题,请参考以下文章

“fit() 缺少 1 个必需的位置参数:'y'”错误

缺少 1 个必需的位置参数:'queryset'

TypeError:缺少 1 个必需的位置参数:'self'

类型错误:parse() 缺少 1 个必需的位置参数:'stream'

TypeError:AuthMiddlewareStack() 缺少 1 个必需的位置参数:'inner'

类型错误:预测()缺少 1 个必需的位置参数:'params'