【发布时间】:2020-10-21 03:50:55
【问题描述】:
我正在制作一个简单的博客应用程序。我已经添加了在您的提要上“喜欢”帖子的功能。但是,我能弄清楚关闭视图的唯一方法是返回某种形式的重定向。问题是,如果您“喜欢”的帖子位于页面的一半,我不希望它再次将缩放重置到页面顶部。有没有办法简单地重定向到同一页面而不影响缩放?
这是我的帖子模型:
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="author")
likes = models.ManyToManyField(User, related_name="likes", blank=True)
def like(self, post):
self.likes.add(post)
def unlike(self, post):
self.likes.remove(post)
我在视图中有以下设置:
@login_required
def like(request, pk):
post = Post.objects.get(id=pk)
Post.like(post, request.user)
return HttpResponseRedirect(reverse('Home'))
@login_required
def unlike(request, pk):
post = Post.objects.get(id=pk)
Post.unlike(post, request.user)
return HttpResponseRedirect(reverse('Home'))
以下是我从 URL 调用视图的方式:
path('like/<int:pk>', views.like, name='Like'),
path('unlike/<int:pk>', views.unlike, name='Unlike'),
我正在使用模板上的表单来触发 URL:
{% if user in post.likes.all %}
<form action="{% url 'Unlike' post.pk %}" method="POST">
{% csrf_token %}
<button type="submit" value="{{ post.id }}" class="unlike">UNLIKE</button>
</form>
{% else %}
<form action="{% url 'Like' post.pk %}" method="POST">
{% csrf_token %}
<button type="submit" value="{{ post.id }}" class="like">LIKE</button>
</form>
{% endif %}
有什么我可以改变的吗?我假设我需要在视图函数的“返回”下更改或添加一些内容?
【问题讨论】:
标签: python python-3.x django django-views