Как отправить идентификатор сеанса аутентификации в бэкенд django с помощью fetch api?
saveBtn.addEventListener('click', function() {
const csrftoken = getCookie('csrftoken');
fetch('http://localhost:8000/card/{{ auction.slug }}/add/', {
method: 'GET',
credentials: 'include',
headers:{
'Content-Type':'application/json',
'X-Requested-With': 'XMLHttpRequest',
'X-CSRFToken': csrftoken,
},
})
.then(function(response) {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(function(data) {
if (data.added === true) {
saveBtn.innerHTML = 'Saved';
} else {
saveBtn.innerHTML = ' Save';
}
})
.catch(function(error) {
console.error('Fetch request failed', error);
});
});
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
if (cookie.startsWith(name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
Я отправляю запрос на бэкенд django через fetch api. Когда я пытаюсь получить пользователя запроса,
TypeError: Field 'id' expected a number but got <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x00000184986CDE80>>.
возвращается ошибка Почему django не аутентифицирует по идентификатору сессии? Должен ли я отправлять request.user.id, но если отправлять его, то любой пользователь может делать запросы для других пользователей, я думаю. Или я неправильно отправляю идентификатор сессии в бэкенд?
views.py
def add_to_card(request, slug):
if request.user.is_anonymous:
pass
auction = get_object_or_404(Auction, slug=slug)
user = request.user
data = {'added': False}
card, created = Card.objects.get_or_create(user=user)
card_item, created = CardItem.objects.get_or_create(card=card, auction=auction)
if created:
data['added'] = True
else:
card_item.delete()
return JsonResponse(data)