【发布时间】:2019-07-15 05:05:55
【问题描述】:
我正在尝试一些我认为非常简单的东西,当我用邮递员测试我的端点时它工作正常,但是当网站启动时,我得到“错误”
这些是我当前的设置:
twilio==6.29.1
Django==2.0.7
djangorestframework==3.9.4
Python 3.6.8
使用 twilio 发送短信后:
client = Client(key1,key2)
message = client.api.account.messages.create(
body= request.data["Body"],
to= request.data["toNumber"],
status_callback='https://myurl',
from_= request.data["fromNumber"]
)
我已设置回拨
class SMSCallBack(APIView):
parser_classes = (JSONParser,)
def post(self, request, format=None):
print(request.GET)
print(request.GET.getlist('SmsSid'))
return Response({'xxx': 'xxx'})
不过这是我在日志中的回复
<QueryDict: {}>
[]
如果我尝试在邮递员中做同样的事情,我会得到
<QueryDict: {'SmsSid': ['asd']}>
['asd']
现在我用邮递员猜测我已经正确设置它(POST,并在参数选项卡中添加一个值),因为来自 twilio 的控制台日志表明他们发送的多个参数之一是 SmsSid
我对 Django 和 python 还是很陌生,所以在尝试获取传入参数时我可能缺少什么?
当我尝试时
request.POST.getlist('SmsSid')
我的结果是:
2019-07-15T05:15:25.735240+00:00 app[web.1]: 10.65.77.132 - - [15/Jul/2019:05:15:25 +0000] "POST /XXXX/smscallback/ HTTP/1.1" 415 100 "-" "TwilioProxy/1.1"
2019-07-15T05:15:25.738919+00:00 heroku[router]: at=info method=POST path="/XXXX/smscallback/" host=XXX.com request_id=3c5b81c2-003b-461a-8bd9-3e79d4545a9a fwd="3.94.8.12" dyno=web.1 connect=1ms service=783ms status=415 bytes=346 protocol=https
当我尝试使用邮递员时,我得到了
[]
【问题讨论】:
-
您使用了
post method,但尝试从GET获取回调参数。你不应该这样做request.POST.getlist('SmsSid') -
Exprator 我已经编辑了问题以显示我在尝试时得到的结果
标签: python django django-rest-framework twilio