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

问题描述 投票:0回答:1

我一直收到这个错误: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
python django-rest-framework
1个回答
0
投票

在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')
© www.soinside.com 2019 - 2024. All rights reserved.