Я пытался создать кнопку «Мне нравится» для моего 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>