我添加了一个Like模型,但我不知道如何增加like的数量
I added a Like model but I don't know how to increase the number of like
我创建了一个博客应用程序,我想为博客中的每个 post 添加一个“赞”按钮,我该怎么做?
我怎样才能在视图和模板中实现这一点?
模特:
class Like(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Photo, on_delete=models.CASCADE)
def __str__(self):
return str(self.user)
观点:
def viewPhoto(request, pk):
post = get_object_or_404(Photo, id=pk)
photo = Photo.objects.get(id=pk)
return render(request, 'photo.html', {'photo': photo, 'post': post })
在其他情况下使用类似的功能你可以做这样的事情,但我希望你知道如何在你的 html?
中使用前端部分
def like(request, pk):
post = Photo.objects.get(pk=pk)
liked= False
like = Like.objects.filter(user=request.user, post=post)
if like:
like.delete()
else:
liked = True
Like.objects.create(user=request.user, post=post)
resp = {
'liked':liked
}
response = json.dumps(resp)
return redirect('') # redirect to any url after the object has been liked
return HttpResponse(response,content_type = "application/json")
您需要将喜欢的对象放在希望具有类似功能的任何视图中:
def viewPhoto(request, pk):
post = get_object_or_404(Photo, id=pk)
photo = Photo.objects.get(id=pk)
liked = [i for i in Photo.objects.all() if Like.objects.filter(user=request.user, post=i)]
return render(request, 'photo.html', {'photo': photo, 'post': post ,'liked':liked})
Html 模板这只是为了让您了解如何在 html 中执行此操作,因为我不知道您是什么类型的脚本或 css使用。所以这个按钮在你的情况下可能看起来不像拇指。
<button class="btn btn-white mr-3 like" id="{{ post.id }}">
{% if post in liked %}
<a href="{% url 'blog:like' post.pk %}" id="likebtn{{ post.pk }}"
class="flex items-center space-x-2">
<div> Unlike</div>
</a>
{% else %}
<a href="{% url 'blog:like' post.pk %}" id="likebtn{{ post.pk }}" class="flex items-center space-x-2">
<div>Like</div>
</a>
{% endif %}
</button>
我创建了一个博客应用程序,我想为博客中的每个 post 添加一个“赞”按钮,我该怎么做? 我怎样才能在视图和模板中实现这一点?
模特:
class Like(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Photo, on_delete=models.CASCADE)
def __str__(self):
return str(self.user)
观点:
def viewPhoto(request, pk):
post = get_object_or_404(Photo, id=pk)
photo = Photo.objects.get(id=pk)
return render(request, 'photo.html', {'photo': photo, 'post': post })
在其他情况下使用类似的功能你可以做这样的事情,但我希望你知道如何在你的 html?
中使用前端部分
def like(request, pk):
post = Photo.objects.get(pk=pk)
liked= False
like = Like.objects.filter(user=request.user, post=post)
if like:
like.delete()
else:
liked = True
Like.objects.create(user=request.user, post=post)
resp = {
'liked':liked
}
response = json.dumps(resp)
return redirect('') # redirect to any url after the object has been liked
return HttpResponse(response,content_type = "application/json")
您需要将喜欢的对象放在希望具有类似功能的任何视图中:
def viewPhoto(request, pk):
post = get_object_or_404(Photo, id=pk)
photo = Photo.objects.get(id=pk)
liked = [i for i in Photo.objects.all() if Like.objects.filter(user=request.user, post=i)]
return render(request, 'photo.html', {'photo': photo, 'post': post ,'liked':liked})
Html 模板这只是为了让您了解如何在 html 中执行此操作,因为我不知道您是什么类型的脚本或 css使用。所以这个按钮在你的情况下可能看起来不像拇指。
<button class="btn btn-white mr-3 like" id="{{ post.id }}">
{% if post in liked %}
<a href="{% url 'blog:like' post.pk %}" id="likebtn{{ post.pk }}"
class="flex items-center space-x-2">
<div> Unlike</div>
</a>
{% else %}
<a href="{% url 'blog:like' post.pk %}" id="likebtn{{ post.pk }}" class="flex items-center space-x-2">
<div>Like</div>
</a>
{% endif %}
</button>