尝试接收条带挂钩时在 Django 上获取 MultiValueDictKeyError
Posted
技术标签:
【中文标题】尝试接收条带挂钩时在 Django 上获取 MultiValueDictKeyError【英文标题】:Getting MultiValueDictKeyError on Django while trying to receiving a stripe hook 【发布时间】:2021-12-25 12:49:20 【问题描述】:当订阅收费失败时,我在尝试接收条纹信号时收到django.utils.datastructures.MultiValueDictKeyError
,
这是回溯
Traceback (most recent call last):
File "/home/aditya/dev/cn/pmx_env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/aditya/dev/cn/pmx_env/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/aditya/dev/cn/pmx_env/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/aditya/dev/cn/pmx_env/lib/python3.7/site-packages/sentry_sdk/integrations/django/views.py", line 67, in sentry_wrapped_callback
return callback(request, *args, **kwargs)
File "/usr/lib/python3.7/contextlib.py", line 74, in inner
return func(*args, **kwds)
File "/home/aditya/dev/cn/pmx_env/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/home/aditya/dev/cn/pmx_env/lib/python3.7/site-packages/zebra/views.py", line 38, in webhooks
request_data = json.loads(request.POST["request_data"])
File "/home/aditya/dev/cn/pmx_env/lib/python3.7/site-packages/django/utils/datastructures.py", line 80, in __getitem__
raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'request_data'
[13/Nov/2021 09:36:29] "POST /zebra/webhooks/ HTTP/1.1" 500 121292
我正在使用
django 2.2 Python 3.7.12提前感谢任何解决方案和建议。
【问题讨论】:
【参考方案1】:不需要json.loads
,你可以像这样使用request.POST.get()
方法
request_data = request.POST.get("request_data")
如果字典中没有 request_data
键,这将返回一个 None
值。
【讨论】:
感谢@dichter,您的回复。request_data = json.loads(request.POST["request_data"])
行来自 django 的核心模块 zebra
。 .../env/lib/python3.7/site-packages/zebra/views.py", line 38, in webhooks
以上是关于尝试接收条带挂钩时在 Django 上获取 MultiValueDictKeyError的主要内容,如果未能解决你的问题,请参考以下文章
使用 cron 作业或通过条带订阅定期网络挂钩进行条带定期付款?
如何使用 ngrok 测试接收 Stripe webhook
使用 SwiftUI 时在拆分视图上接收应用程序之间焦点更改的通知