【问题标题】:Reverse for 'posts' with keyword arguments '{'id': 106}' not found. 1 pattern(s) tried: ['posts/$']未找到带有关键字参数“{'id': 106}”的“帖子”的反向操作。尝试了 1 种模式:['posts/$']
【发布时间】:2021-04-25 00:07:09
【问题描述】:

我正在构建一个 BlogApp 并且一切正常,但是当我 return redirect('mains:posts',id=post_id) 时。它向我展示了:-

未找到带有关键字参数“{'id': 106}”的“帖子”的反向操作。尝试了 1 种模式:['posts/$'] , 视图.py

    def post_like_dislike(request, post_id):
        post = get_object_or_404(Post, pk=post_id)
        # Like
        if request.GET.get('submit') == 'like':
            if request.user in post.dislikes.all():
                post.dislikes.remove(request.user)
                post.likes.add(request.user)
                return JsonResponse()
            elif request.user in post.likes.all():
                post.likes.remove(request.user)
                return redirect('mains:posts',id=post_id)
            else:
                post.likes.add(request.user)
                return JsonResponse({'action': 'like_only'})
        else:
            messages.error(request, 'Something went wrong')
            return redirect('mains:posts',id=post_id)

 The Error is is at this Line -----------------^

detail.html

                <form method="GET" class="likeForm d-inline" action="{% url 'mains:post_like_dislike' data.id %}"
                    data-pk="{{ data.id }}">
                    <button type="submit" class="btn"><i class="far fa-thumbs-up"></i>
                        <span id="id_likes{{data.id}}">
                            {% if user in data.likes.all %}
                            {{data.likes.count}}</p>
                            {% else %}
                            {{data.likes.count}}</p>
                            {% endif %}
                        </span><form><button name='submit' type='submit' value="like"> Like </button></form>
                    </button>
                </form>

错误

当我点击喜欢按钮时,它显示Reverse for 'posts' with keyword arguments '{'id': 106}' not found. 1 pattern(s) tried: ['posts/$']

任何帮助将不胜感激。

提前致谢

【问题讨论】:

  • 请添加您的 url.py
  • 您是否有一个名为posts 和另一个名为post 的URL?看起来两者在这里混淆了,您正在将适用于 post 的 ID 传递给 posts 页面。
  • 我只有视图、网址中的帖子。
  • @GaëtanGR,我已经上传了

标签: python html django django-views


【解决方案1】:

所以你正在使用redirect('mains:posts',id=post_id)

但在mains 应用程序中,posts URL 不带任何参数。

未找到带有关键字参数“{'id': 106}”的“帖子”的反向操作。尝试了 1 种模式:['posts/$']

此错误为您提供了线索,因为它向您显示了它尝试的 URL,即 posts/$

因此,redirect('mains:posts') 将匹配这个尝试的 URL,因为它不提供任何参数并且路径/url 不期望任何参数。

来自您包含的 URL;

path('post_like_dislike/&lt;int:post_id&gt;/',views.post_like_dislike, name='post_like_dislike'),

这是一个需要 Post 对象 ID 参数的 URL。所以这将被重定向到类似的东西;

redirect('mains:post_like_dislike', post_id=post_id)

【讨论】:

  • 所以你的意思是,我应该使用 :- return redirect('mains:post_like_dislike',id=post_id) 而不是 return redirect('mains:posts,id=post_id)
  • 否,因为您可能不想重定向到该视图。这取决于你使用什么。我只是想解释一下,通过在redirect 中包含,id=post_id 会导致错误,因为posts URL 不带任何参数
  • 非常感谢您的帮助。我很感激
  • 我已经解决了这两个错误。非常感谢您的努力。非常感谢您抽出宝贵的时间来回答我的问题。
  • 恭喜,您的声望达到了 9K。
猜你喜欢
  • 2015-02-08
  • 2020-07-02
  • 2016-11-17
  • 1970-01-01
  • 2016-11-21
  • 2014-11-23
  • 2017-01-06
  • 2018-07-12
  • 2016-05-08
相关资源
最近更新 更多