Hi all,
-- I need some help writing the ajax for a like button instead of refreshing every time a like is posted
here is the template:
<form action="{% url 'score:like_post' post.pk %}" method='POST'>
{% csrf_token %}
{% if user.is_authenticated %}
{% if liked %}
<button type='submit' name='post_id' class= "btn btn-danger btn-sm" value="{{post.id}}"> Unlike </button>
{% else %}
<button type='submit' name='post_id' class= "btn btn-primary btn-sm" value="{{post.id}}"> Like </button>
{% endif %}
{% else %}
<small><a href="{% url 'login' %}"> Login</a> to Like </small>
<strong>{{total_likes}} Likes </strong>
{% endif %}
</form>
Here is the urls:
path('like/<int:pk>', LikeView, name='like_post'),
here is the views:
def LikeView(request, pk):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
like = False
if post.likes.filter(id=request.user.id).exists():
post.likes.remove(request.user)
like = False
else:
post.likes.add(request.user)
like = True
return redirect('score:post-detail', pk=pk)
class PostDetailView(DetailView):
model = Post
template_name = "post_detail.html"
def get_context_data(self, *args, **kwargs):
context = super(PostDetailView, self).get_context_data()
stuff = get_object_or_404(Post, id=self.kwargs['pk'])
total_likes = stuff.total_likes()
liked = False
if stuff.likes.filter(id=self.request.user.id).exists():
liked = True
context["total_likes"] = total_likes
context["liked"] = liked
return context
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/00707977-9b68-4329-a13d-adb9ab7b8813%40googlegroups.com.
No comments:
Post a Comment