Проблемы с Python запросами при использовании django
Я пытаюсь использовать API, отправляя пост-запрос. Вот мой код ниже
def sendpostrequest(request):
form = RechargeForm (request.POST or None)
if form.is_valid():
mobile_number = form.cleaned_data['mobile_number']
amount = form.cleaned_data['amount']
network_id = form.cleaned_data['network_id']
plan_id = form.cleaned_data['plan_id ']
if request.method == "POST":
url = "https://exampleapi/api/topup/"
payload = "{\"network\": network_id,\n\"mobile_number\": \"09037346247\",\n\"plan\":plan_id}"
headers = {'Authorization': 'Token s66666vbbbbbbbb5c891fe9e7bbe3f9a0a8742d','Content-Type': 'application/json'}
response = requests.request("POST", url, headers=headers,
data=json.dumps(payload))
info = response.json()
info['mobile_number'] = mobile_number
info['network_id'] = network_id
info['amount'] = amount
return render(request, 'data_api_recharge_successful.html', {
'info':info, 'mobile_number':mobile_number,
'network_id':network_id ,})
ERROR
status_code = 400( The HyperText Transfer Protocol (HTTP) 400 Bad Request response status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (for example, malformed request syntax, invalid request message framing, or deceptive request routing).
error = response.text
error = {"non_field_errors":["Invalid data. Expected a dictionary, but got str."]} .
Уточнение ошибки
После отправки этого запроса я получил Status Code=400 когда я сделал status_code = response.status_code
а response.text дал мне {"non_field_errors":["Invalid data. Expected a dictionary, but got str."]} .
status_code = response.status_code
Request For Help
Может ли кто-нибудь помочь мне исправить это, потому что я очень уверен, что делаю что-то неправильно, чтобы получить эти две ошибки
Документация, которой я следую для запроса на python, выглядит следующим образом
import requests
import json
url = "https://exampleapi/api/topup/"
payload = "" headers = { 'Authorization': 'Token 8f00fa816b1e3b485bahhhhhd361ef803311', 'Content-Type': 'application/json' }
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Вы отправляете полезную нагрузку как целую строку, измените ее на словарь, т.е. удалите кавычки " из вашей полезной нагрузки как
payload = {
"network": network_id,
"mobile_number": "09037346247",
"plan":plan_id
}