【发布时间】:2021-05-30 12:36:31
【问题描述】:
我喜欢和不喜欢这篇文章。喜欢和不喜欢工作完美,但唯一的问题是当我单击时我停留在同一页面上,但我重定向到页面顶部。我想要的不仅是页面,还要保持相同的位置,我的每篇文章都有图像,所以要阅读整篇文章,我们必须向下滚动,并且喜欢按钮是文章的结尾。以下是一些细节。
post_detail 页面(喜欢按钮)
<form action="{% url 'like_post' single_post.category.slug single_post.slug %}" method="POST">
{% csrf_token %}
<button type="submit" name="like_btn" value={{single_post.id}} class="ui red button like_btn" >
<i class="heart icon"></i> Like ({{single_post.total_likes}})
</button>
</form>
urls.py
>path('<slug:category_slug>/<slug:post_slug>', views.post_detail , name="post_detail"),
path('like/<slug:category_slug>/<slug:post_slug>', views.like_post, name="like_post")
后模型
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=255)
slug = models.SlugField(max_length=100)
image = models.ImageField(upload_to = 'photos/post_image/%Y/%m/%d/', default="../static/images/pp2.jpg")
category = models.ForeignKey(Category, on_delete=models.CASCADE)
likes = models.ManyToManyField(User, related_name='post_likes')
description = FroalaField()
views = models.IntegerField(default=0)
comments = GenericRelation(Comment)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
return super(Post, self).save(*args, **kwargs)
def total_likes(self):
return self.likes.count()
def get_url(self):
return reverse("post_detail", args=[self.category.slug, self.slug])
def __str__(self):
return self.title
views.py
>def like_post(request,category_slug, post_slug):
post = get_object_or_404(Post, id=request.POST.get('like_btn'))
liked = False
if post.likes.filter(id = request.user.id).exists():
post.likes.remove(request.user)
liked = False
else:
post.likes.add(request.user)
liked = True
return HttpResponseRedirect(reverse('post_detail', args=[category_slug, post_slug]))
【问题讨论】:
-
我相信你应该通过ajax方法发送POST请求而不提交表单
标签: django django-models django-views django-templates