[基本上,如果您对它发出POST请求,则会调用此API端点。问题是由于某种原因,我无法将字节转换为JSON,因此可以访问数据。
我的代码:
@api_view(['POST'])
def create_user(request):
""" POST = Create user. """
# Check that a username with this email doesn't already exist
try:
data = {}
print("IS IT WORKING...?")
print(type(request.body))
print(request.body)
# Use double quotes to make it valid JSON
my_json = request.body.decode('utf8').replace("'", '"')
print("MY_JSON:")
print(my_json)
data = json.loads(my_json)
print("DATA:")
print(data)
s = json.dumps(data, indent=4, sort_keys=True)
print("s:")
print(s)
except User.DoesNotExist:
print("PLS WORK ON CONSOLE")
return Response(status=status.HTTP_409_CONFLICT)
我尝试使用邮递员向我的路径users/create/
发出POST请求,但是当我打印request.body
以查看我的POST请求的内容时,该请求的格式设置不正确,带有许多随机数字和破折号。这使我无法将其转换为JSON。这是具有email
和password
字段的简单POST请求。
这是奇怪的格式:https://gyazo.com/fa1cc2f04637c02f79fe59790153ae40
这是“ json”在我解码并用双引号转换后的样子(请注意奇怪的破折号和数字):https://gyazo.com/3ca41106117a4e9acdd96929469313a1
此后,由于data = json.loads(my_json)
导致错误,因为输入的格式不正确。
错误消息:
Internal Server Error: /users/create/
Traceback (most recent call last):
File "/Users/mightu/Desktop/jason_app/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/Users/mightu/Desktop/jason_app/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 "/Users/mightu/Desktop/jason_app/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 "/Users/mightu/Desktop/jason_app/env/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "/Users/mightu/Desktop/jason_app/env/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/Users/mightu/Desktop/jason_app/env/lib/python3.7/site-packages/rest_framework/views.py", line 505, in dispatch
response = self.handle_exception(exc)
File "/Users/mightu/Desktop/jason_app/env/lib/python3.7/site-packages/rest_framework/views.py", line 465, in handle_exception
self.raise_uncaught_exception(exc)
File "/Users/mightu/Desktop/jason_app/env/lib/python3.7/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
raise exc
File "/Users/mightu/Desktop/jason_app/env/lib/python3.7/site-packages/rest_framework/views.py", line 502, in dispatch
response = handler(request, *args, **kwargs)
File "/Users/mightu/Desktop/jason_app/env/lib/python3.7/site-packages/rest_framework/decorators.py", line 50, in handler
return func(*args, **kwargs)
File "/Users/mightu/Desktop/jason_app/users/views.py", line 38, in create_user
data = json.loads(my_json)
File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我已经使用了这些SO帖子(1,2)将我带到现在的位置(意识到我的输入是错误的!)。>
[基本上,如果您对它发出POST请求,则会调用此API端点。问题是由于某种原因,我无法将字节转换为JSON,因此可以访问数据。我的代码:@ ...
编辑:好的,所以我找到了解决方案。在邮递员中,您可以将数据发送为form-data
,也可以发送为raw
。我使用的是form-data
,我想这简直毁了一切,创造了所有怪异的-----和整数。我切换到raw
并直接输入JSON格式和我的代码,现在可以使用!所有的!但是我完全不明白为什么。我只是有一种直觉,就是我发送数据的方法根本不正确。有人可以解释吗?