Django error - didn't return an HttpResponse object. It returned None instead
Не работает форма с ajax при нажатии на like выдает ошибку didn't return an HttpResponse object. It returned None instead.
view
def post_remove_like(request):
"""Удаляем like у поста"""
if request.is_ajax():
post_likes_id = int(request.POST.get('post_likes_id'))
data = {
'removed': True,
}
post_like = PostsLikes.objects.get(id=post_likes_id)
post_like.delete()
return JsonResponse(data)
script
function addRemovePostLike() {
$('form.add-remove-post-like').each((index, el) => {
$(el).on('submit', (e) => {
e.preventDefault();
const post_id = $(el).find('input[name="post_id"]').val();
const user_id= $(el).find('input[name="user_id"]').val();
const post_likes_id = $(el).find('input[name="post_likes_id"]').val();
if ( $(e.currentTarget).hassClass('add-post-like') ) {
$.ajax({
url: "/likes/add/",
type: "POST",
dataType: "json",
data: {
post_id: post_id,
user_id: user_id,
},
success: (data) => {
console.log(data);
if (data['added']) {
$(el).removeClass('add-post-like').addClass('remove-post-like');
$(el).attr('action', '/likes/remove/');
}
}
});
}
if ( $(e.currentTarget).hassClass('remove-post-like') ) {
$.ajax({
url: "/likes/remove/",
type: "POST",
dataType: "json",
data: {
post_id: post_id,
user_id: user_id,
post_likes_id: post_likes_id,
},
success: (data) => {
console.log(data);
if (data['removed']) {
$(el).removeClass('remove-post-like').addClass('add-post-like');
$(el).attr('action', '/likes/add/');
}
}
});
}
});
});
Решил проблему путем добавления в ajax:
headers: {
"X-Requested-With": "XMLHttpRequest",
},
также убрал async из
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js" async></script>
и в конце скрипта добавил:
$(document).ready(() => {
csrf();
addRemovePostLike();
});