【发布时间】:2021-03-01 17:22:47
【问题描述】:
如何将 Django 中的点赞按钮连接到 ajax,以及当按钮点击点赞数 +1 时,如果再次点击点赞数 -1
这是我的视频模型
class Video(models.Model):
author = models.ForeignKey(Account, on_delete=models.CASCADE)
video = models.FileField(upload_to='post-videos', validators=[validate_file_extension])
title = models.CharField(max_length=100)
description = models.TextField(null=True, blank=True)
created_date = models.DateTimeField(auto_now_add=True)
likes = models.ManyToManyField(Account, blank=True, related_name='likes', default=None)
我的看法
class AddLike(LoginRequiredMixin, View):
def post(self, request, pk, *args, **kwargs):
video = Video.objects.get(pk=pk)
is_dislike = False
for dislike in video.dislikes.all():
if dislike == request.user:
is_dislike = True
break
if is_dislike:
video.dislikes.remove(request.user)
is_like = False
for like in video.likes.all():
if like == request.user:
is_like = True
break
if not is_like:
video.likes.add(request.user)
if is_like:
video.likes.remove(request.user)
next = request.POST.get('next', '/')
return HttpResponseRedirect(next)
我的模板 html
<form method="POST" action="{% url 'video:like' video.pk %}" id="my-like-form">
{% csrf_token %}
<input type="hidden" class="likin" name="next" value="{{ request.path }}">
<button class="remove-default-btn" type="submit" id="openPopup" class="remove-default-btn like-btn{{ request.path }}" style="border: none; ">
<i class="fa fa-thumbs-up" aria-hidden="true"><span class="">{{ video.likes.all.count }}</span></i>
</button>
</form>
【问题讨论】:
-
分享你的
Video模型? -
好的,先生,这是我的模特
-
有错误
Reverse for 'like' with arguments '(141,)' not found. 1 pattern(s) tried: ['video/account/video/like$'] -
你在
urls.py中的网址是什么path -
` path('account/video/like', addRemoveLike, name="like"),`
标签: django django-models django-views django-forms django-templates