如何解决如何修复curl django rest框架?
如何修复curl django rest框架,出现这样的错误
rest_framework.exceptions.ParseError: JSON parse error - Expecting value: line 1 column 1 (char 0)
这是我的卷曲
curl -X POST http://127.0.0.1:8000/api/signup -H "Content-Type: application/json" -d '{"username":"indah","password":"indah123"}'
这是我的代码,
@csrf_exempt
def signup(request):
if request.method == 'POST':
try:
data = JSONParser().parse(request)
user = User.objects.create_user(data['username'],password=data['password'])
user.save()
token = Token.objects.create(user=user)
return JsonResponse({'token':str(token)},status=201)
except IntegrityError:
return JsonResponse({'error':'That username has already been taken. Please choose a new username'},status=400)
并在一行中得到错误
data = JSONParser().parse(request)
我使用cmd窗口卷曲时卷曲有什么问题?
解决方法
这里有可能的增强功能(从上到下):
-
添加装饰器
@require_http_methods(['POST'])
允许您删除此代码if request.method == 'POST':
,并且Django将自动以其他方法响应请求。该装饰器可以导入from django.views.decorators.http import require_http_methods
-
DRF中已经内置了身份验证,其中包含多个选项。文档是here,您的示例可以是基本身份验证或令牌身份验证。为了简化示例,您可以使用
import json
中的常规JSON模块。 -
您来自curl的JSON在
request.data
。因此,如果您将使用import json
,则可以获得类似data = json.loads(request.data.encode())
的对象。 -
您正在用
201 Created
进行回复。如果客户端不检查200 OK
的响应,那就很好了。 -
更好的方法是使用DRF内置身份验证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。