Error when trying to decode json: simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Error when trying to decode json: simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我在尝试解码时收到此错误 json:

simplejson.errors.JSONDecodeError:期望值:第 1 行第 1 列(字符 0)

任何帮助将不胜感激。

views.py:

from django.shortcuts import render
import requests

def home(request):
    response = requests.get('https://dev-api.prime.com/api/v1/hub/login')
    data = response.json()
    return render (request, 'home.html', {
        'email': data['email'],
        'password': data['password']
    })

urls.py:

 path ('home/', views.home, name="home"),

home.html

{% extends 'main.html' %}

{% block content %}
  <h2>API</h2>
  <p>Your email is <strong>{{ email }}</strong>, and password <strong>{{ password }}</strong></p>
{% endblock %}

我试图从终端发送 POST 请求:

http POST https://dev-api.prime.com/api/v1/hub/login email="sssdprime@gmail.com" password="asssdps"

并得到我想要的回复:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 866
Content-Type: application/json; charset=UTF-8
Date: Wed, 28 Oct 2020 07:09:45 GMT
Server: nginx/1.12.2
Set-Cookie: _language=811f45dc7836f8b3da4c5d04b177501191c20a3f77a46812f864a3bca7d5d3e1a%3A2%3A%7Bi%3A0%3Bs%3A9%3A%22_language%22%3Bi%3A1%3Bs%3A2%3A%22en%22%3B%7D; path=/; HttpOnly
Set-Cookie: _csrf=5f3fb0e6b529660e0a11a97a3fd3e9a85aa3794d20; path=/; HttpOnly
Vary: Accept
X-Debug-Duration: 816
X-Debug-Link: /debug/default/view?tag=5f991938b8410
X-Debug-Tag: 5f991938b8410
X-Frame-Option: SAMEORIGIN
X-Powered-By: PHP/7.2.18
X-UA-Compatible: IE=Edge,chrome=1
X-XSS-Protection: 1

{
    "data": {
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2MDM4Njg5ODUsImlzcyI6Imh0dHA6XC9cL2Rldi1hcGkuZGVudGFwcmltZS5jb206ODA5NCIsImF1ZCI6Imh0dHA6XC9cL2Rldi1hcGkuZGVudGFwcmltZS5jb206ODA58",
        "complete": false,
        "country": "AL",
        "date_of_birth": null,
        "email": "sssdprime@gmail.com",
        "first_name": "somename",
        "id": 201,
        "last_name": "somename",
        "phone": "08865444567",
        "role": 10,
        "sf_token": "0014H00002dd",
        "type_language": "en",
        "username": ""
    },
    "status": 200,
    "success": true
}

这是您的要求

http POST https://dev-api.prime.com/api/v1/hub/login email="sssdprime@gmail.com" password="asssdps"

在代码中,

response = requests.get('https://dev-api.prime.com/api/v1/hub/login')

它们是不同的。在第一个请求中,您使用了“POST”方法,旁边还有电子邮件和密码。 在您的代码中,您只需请求“GET”方法。

将请求代码更改为类似这样的内容,它应该会收到正确的响应。

response = requests.post('https://dev-api.prime.com/api/v1/hub/login', json={"email":"sssdprime@gmail.com", "password":"asssdps"})

并且由于您想要的响应是这样的

{
    "data": {
        ...
    },
    "status": 200,
    "success": true
}

响应会return字典。而你只想要数据。您需要访问“数据”键中的值。所以改变这个,

data = response.json()

进入,

data = response.json()['data']