Sunday, May 17, 2020

Re: how to write Ajax for a Like button in Django

Hi Motaz,

When I added your code it disabled the function of the button nothing happened

On Sunday, May 17, 2020 at 9:30:38 PM UTC-4, Motaz Hejaze wrote:
In your like button form in your templates , 
try this :

<form onsubmit="return false">  </form>    i don't think you need ajax for this , but if you still need it let us know

On Mon, 18 May 2020, 2:26 am Gabriel Araya Garcia, <gabriela...@gmail.com> wrote:
Hi Ahmed, I was looking for that during several months and I have found examples than not run, and therefore I`ve get one conclution: "It`s not posible to get that functionality in Django". No one could demostrate with example code.
If you find something, please send me the code.

Thanks

  
Gabriel Araya Garcia
GMI - Desarrollo de Sistemas Informáticos




El dom., 17 may. 2020 a las 20:15, Ahmed Khairy (<ahmed.he...@gmail.com>) escribió:
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(requestpk):
    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...@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.

--
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...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAKVvSDCuegzvsZQ_Rfms3yMA_EO914T0yJ_n929mnx7bNDodUA%40mail.gmail.com.

--
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/76f6356b-17bc-4697-b6cf-966f01e9217f%40googlegroups.com.

No comments:

Post a Comment