Skip to content

Instantly share code, notes, and snippets.

@marteinn
Last active January 21, 2024 06:57
Show Gist options
  • Save marteinn/3785ff3c1a3745ae955c to your computer and use it in GitHub Desktop.
Save marteinn/3785ff3c1a3745ae955c to your computer and use it in GitHub Desktop.
Using the Fetch Api with Django Rest Framework

Using the Fetch Api with Django Rest Framework

Server

First, make sure you use the SessionAuthentication in Django. Put this in your settings.py

# Django rest framework
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication'
    ]
}

Client

Then start with including the getCookie method from the Django Docs.

Finally use the fetch method to call your endpoint.

var myData = {
    hello: 1
};

fetch("/api/v1/endpoint/5/", {
    method: "put",
    credentials: "same-origin",
    headers: {
        "X-CSRFToken": getCookie("csrftoken"),
        "Accept": "application/json",
        "Content-Type": "application/json"
    },
    body: JSON.stringify(myData)
}).then(function(response) {
    return response.json();
}).then(function(data) {
    console.log("Data is ok", data);
}).catch(function(ex) {
    console.log("parsing failed", ex);
});

Easy! (Remember this will currently only work on Chrome and Firefox)

@kc2684
Copy link

kc2684 commented Jun 10, 2021

Any chance of someone posting an example of the django code that receives "myData" and returns the "data"?
Thanks

@SatishChoudary
Copy link

data_to_get = {
"id": 1,
"name": "Test",
};

function get_conta_receita(data_to_get = {}) {
var myData = {
"id": data_to_get['id'],
"name": data_to_get['name'],
};
const defaults = {
'method': 'GET',
'credentials': 'include',
'headers': new Headers({
'X-CSRFToken': csrf_token,
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}),
};

url = montaURL(contas_receita_api, myData);

fetch(url, defaults)
.then(function(response) {
    return response.json();      
}).then(function(data) {
    console.log(data);
}).catch(function(ex) {
    console.log("parsing failed", ex);
});

};

@baramsivaramireddy
Copy link

Thanks, it helped me too .

@koljapluemer
Copy link

Finally, someone explaining this. Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment