Ссылка sh проблема с кнопкой в ​​django? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытался создать кнопку «Мне нравится» для моего django блога, он работает нормально. проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я нажимаю кнопку «Мне нравится», она обновляется sh и дает «Нравится» Как я могу остановить его от обновления страницы, это выглядит плохо, потому что я пытаюсь дать, как в пролифере пользователя или в деталях поста, он перенаправляет на домашнюю страницу. Кто-нибудь может мне помочь?

models.py

class Post(models.Model):
      title= models.CharField(max_length=100)
      img = models.ImageField(upload_to='pics')
      content = models.TextField()
      likes = models.ManyToManyField(User,blank=True, default=None, related_name='post_likes')
      date_posted = models.DateTimeField(default=timezone.now)
      author= models.ForeignKey(User,on_delete=models.CASCADE)

      def __str__(self):
         return self.title
      @property
      def num_likes(self):
         return self.liked.all().count()

      def get_absolute_url(self):
         return reverse('User-Posts-Details', kwargs={'pk': self.pk})

    Like_Choice = (
                 ('Like','Like'),
                ('Unlike','Unlike'),
                                   )

    class Like(models.Model):
           user = models.ForeignKey(User,on_delete=models.CASCADE)
           post = models.ForeignKey(Post,on_delete=models.CASCADE)
           value = models.CharField(choices=Like_Choice,default='Like',max_length=20)

           def __str__(self):
              return str(self.post)

views.py

def like_post(request):
user = request.user
if request.method == 'POST':
    post_id = request.POST.get('post_id')
    post_obj = Post.objects.get(id=post_id)

    if user in post_obj.likes.all():
        post_obj.likes.remove(user)
    else:
        post_obj.likes.add(user)
    like, created = Like.objects.get_or_create(user=user,post_id=post_id)

    if not created:
        if like.value == 'Like':
            like.value = 'Unlike'
        else:
            like.value = 'Like'
    like.save()

return redirect('Love Travel-User-Posts')

urls.py

  path('user-posts/like/',like_post,name='User-Post-Like'),

сообщений. html

 <form action="{% url 'User-Post-Like' %}" method="POST" class="ui form">
        {% csrf_token %}
        <input type="hidden" name="post_id" value="{{ post.id }}">
        <strong class="Likes ml-3 mr-2">{{ post.likes.all.count }}</strong>
        {% if user not in post.likes.all %}
        <button class="btn btn-success" id="like" type="submit">Like</button>
        {% else %}
        <button class="btn btn-danger" id="unlike" type="submit">UnLike</button>
        {% endif %}
    </form>
...