我将以下帖子数据发送到django Rest API
Request URL: http://localhost:8000/polls/
Request Method: POST
Status Code: 200 OK
Remote Address: 127.0.0.1:8000
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:8100
Content-Length: 90
Content-Type: text/html; charset=utf-8
Date: Mon, 18 Jun 2018 11:01:54 GMT
Server: WSGIServer/0.2 CPython/3.6.5
Vary: Origin
X-Frame-Options: SAMEORIGIN
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 83
content-type: text/plain
Host: localhost:8000
Origin: http://localhost:8100
Referer: http://localhost:8100/
User-Agent: Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Mobile Safari/537.36
0:
{id: "1", username: "admin", password: "admin", user_group_id: "1", status: "1"}
此处发送的内容将首先针对数据库中保存的内容进行身份验证。我试图访问这些数据,但没有这样做。 当我使用json parse
处理数据时案例1。
def dunction(request)
data = json.loads(request.body.decode("utf-8"))
vak=data
return HttpResponse(vak)
然后收到以下回复
{'id': '1', 'username': 'admin', 'password': 'admin', 'user_group_id': '1', 'status': '1'}
案例2。 操作相同的代码时
data = json.loads(request.body.decode("utf-8"))
vak=data[0]
return HttpResponse(vak)
收到回复
idusernamepassworduser_group_idstatus
案例3.
def dunction(request):
data = json.loads(request.body.decode("utf-8"))
vak=data.username
return HttpResponse(vak)
抛出错误
'list' object has no attribute 'username'
FYI, 在这里,我尝试创建一个自定义身份验证功能,该功能对userData进行身份验证,然后将数据发送回服务器。
'DEFAULT_AUTHENTICATION_CLASSES':
'polls.authentication.UserAuthentication',
答案 0 :(得分:2)
HttpResponse需要迭代。你正在传递它实际上可迭代的各种东西:在第一种情况下,一个列表,所以它打印该列表中的(唯一)条目,这是一个字典;在第二种情况下,你传递一个字典,所以它遍历dict只给出键。在第三种情况下,出于某种原因,您尝试使用对象表示法来访问列表中的字典的键,这根本不会起作用。
我不确定您的实际问题是什么,但如果您确实想要访问用户名,则需要data[0]['username']
。
请注意,DRF的目的是抽象出很多这样的东西;您应该使用内置功能而不是执行任何此操作。
答案 1 :(得分:1)
使用request.data获取要处理的数据。返回消息以及HTTP状态代码,如下所示
def dunction(request):
username=request.data['username']
password=request.data['password']
group_id=request.data['user_group_id']
status=request.data['status']
return Response({"status":"success"}, status=status.HTTP_200_OK)