【问题标题】:Creating simple like button创建简单的like按钮
【发布时间】:2021-07-19 00:13:15
【问题描述】:

您好,我正在开发一个博客应用程序,我正在为由它的 pk 标识的帖子创建一个简单的点赞按钮,其中链接位于表单中,但遇到了错误。

NoReverseMatch 在 /single_post/8/ 未找到“like_post”的反向。 'like_post' 不是有效的视图函数或模式名称。

my views.py 用于详细视图和类似按钮视图

def post_detail(request, pk):
    post = Post.objects.get(id=pk)

    context = {
        'post': post,
    }
    return render(request, 'news/post_detail.html', context)





def LikeView(request, pk):
    post = get_object_or_404(Post, id=request.POST.get('post_id'))
    post.likes.add(request.user)

    return(HttpResponseRedirect(reverse('single_post', args=[str(pk)] )))

models.py

class Post(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    image = models.ImageField(upload_to='img/', default='img/default.jpg')
    author = models.CharField(max_length=100)
    date = models.DateTimeField(auto_now_add=True)
    credit = models.URLField(blank=True, null=True)
    likes = models.ManyToManyField(User, related_name='daily_posts')
    

    def __str__(self):
        return self.title 

在详细视图中的表单和链接

<form action="**{% url 'like_post' post.pk %}**" method="POST">
                        {% csrf_token %}
                        <button class="btn btn-primary btn-sm" type="submit", name="post_id", value="{{ post.id }}">Like</button>
                    </form>

以及每次我点击喜欢时都会遇到的错误。

NoReverseMatch at /single_post/8/
Reverse for 'like_post' not found. 'like_post' is not a valid view function or pattern name.

我无法确定这里似乎是什么问题,有人可以帮忙吗?

【问题讨论】:

    标签: python html django error-handling


    【解决方案1】:

    在 LikeView 中,您反转了 'single_post',但在表单中您有 'like_post'。也许将 LikeView 中的 'single_post' 更改为 'like_post'EDIT FOR NAMESPACE:我相信您需要在表单中包含命名空间,即{% url 'news:like_post' post.pk %}

    【讨论】:

    • 我做到了,但它仍然不起作用,我的意思是在帖子上反转,因为like功能不会登陆另一个页面它只会将like count发送到数据库
    • 能否包含您的 URL 配置代码?
    • 您是否在 URL 配置中设置了命名空间,即 app_name
    • @OthnielLafond 我编辑了我的答案。我相信您需要在表单中包含命名空间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多