Я создаю кнопку «Мне нравится» в Django, используя вызовы AJAX для моей домашней страницы (где у меня есть список сообщений, которые пользователь может «Нравится»), Для тестирования логики кнопки «Мне нравится» я использовал обычный (с обновлением страницы) способ отправкиформа, и она работает правильно, где я даю URL-адрес как action='{% url "like_post" %}'
.Но когда я отправил заявку на основе AJAX, я получаю сообщение об ошибке: POST http://127.0.0.1:8000/like/ 404 (Not Found)
.
template.py:
{% for post in all_posts %}
<div class="posts" id="post-{{ post.id }}">
<h2 class="thought-title">{{ post.title }}</h2>
<p class="content" id="{{ post.id }}" onclick="showWholeContent({{ post.id }})">
{{ post.content }}
</p>
<div class="post-footer">
<form id="like-form{{ post.id }}">
{% csrf_token %}
<button type="submit" id="{{ post.id }}btn" name="like" value="{{ post.id }}" class="btn upvote">Like</button>
<script type="text/javascript">
{% for like in post.likes.all %}
{% if like != user %}
{% else %}
likingPost("{{ post.id }}btn");
{% endif %}
{% endfor %}
// Adding AJAX for Like button
$(document).ready(function(event){
$(document).on('click', '#{{ post.id }}btn', function(event){
event.preventDefault();
$.ajax({
type: 'POST',
url: '{% url "like_post" %}',
data: {
csrfmiddlewaretoken: '{{ csrf_token }}'
},
success:function(response){
}
});
});
});
</script>
</form>
</div>
</div>
{% endfor %}
urls.py:
urlpatterns = [
path('like/', views.like_post, name="like_post")
.
.
.
]
views.py:
def like_post(request):
print("Insisde Like Post")
post = get_object_or_404(Posts, id=request.POST.get('like'))
if post.likes.filter(id=request.user.id).exists():
post.likes.remove(request.user) # Liking The Post
print("DisLiking the post")
else:
post.likes.add(request.user)
print("Liking the post")
return HttpResponseRedirect('/')
Примечание: я новичок в AJAX. Это мой первый проект, который включает вызовы AJAX