响应无效 'application/json'

Response is not valid 'application/json'

我的 post 请求有问题。这是我的代码:

def add_review(request, dealer_id):
    if request.method == "GET":
        context = {
            "cars": CarModel.objects.all().filter(dealerId = dealer_id),
            "dealerId": dealer_id
        }
        return render(request, 'djangoapp/add_review.html', context)
    if request.method == "POST":
        if request.user.is_authenticated:
            form = request.POST
            review = {                
                "dealership": int(dealer_id),
                "name": request.user.username,
                "review": form["review"],
                "purchase": form.get("purchasecheck") == 'on',
                }
            if form.get("purchasecheck"):
                review["purchase_date"] = datetime.strptime(form.get("purchasedate"), "%m/%d/%Y").isoformat()
                car = CarModel.objects.get(pk=form["car"])
                review["car_make"] = car.make.name
                review["car_model"] = car.name
                review["car_year"]= int(car.year.strftime("%Y"))
            json_payload = {"review": review}
            url = "https://4fbfebf7.us-south.apigw.appdomain.cloud/api/review"
            post_request(url=url, json_payload=json_payload, dealer_id=dealer_id)
            return redirect("djangoapp:dealer_details", dealer_id=dealer_id)
        else:
            return redirect("/djangoapp/login")

还有这个:

def post_request(url, json_payload, **kwargs):
    json_data = json.dumps(json_payload, indent=4)
    print(f"{json_data}")
    try:
        # Call get method of requests library with URL and parameters
        response = requests.post(url, params=kwargs, json=json_data)
    except Exception as e:
        # If any error occurs
        print("Network exception occurred")
        print(f"Exception: {e}")
    print(f"With status {response.status_code}")
    print(f"Response: {response.text}")

我收到响应无效'application/json'错误as you can see here.

与此同时,当我将完全相同的 JSON 复制到 IBM Cloud 以测试我的 API 时,一切正常并创建了记录 as you can see here.

我想这是一个非常愚蠢的错误,但是在哪里呢?

当您将 json 传递给 request.post 时,它应该是一个可序列化的对象(尚未序列化)

def post_request(url, json_payload, **kwargs):
    # json_data = json.dumps(json_payload, indent=4). << delete
    print(f"{json_payload}")
    try:
        # Call get method of requests library with URL and parameters
        response = requests.post(url, params=kwargs, json=json_payload)
    except Exception as e:
        # If any error occurs
        print("Network exception occurred")
        print(f"Exception: {e}")
    print(f"With status {response.status_code}")
    print(f"Response: {response.text}")