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'(代码片的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:缺少 1 个必需的位置参数:'self'
类型错误:parse() 缺少 1 个必需的位置参数:'stream'