【问题标题】:Not Found: /post/12/responses/未找到:/post/12/responses/
【发布时间】:2021-05-08 15:29:17
【问题描述】:

我想要做的是获得特定的帖子 cmets。

models.py

class Post(models.Model):
    title = models.CharField(max_length = 100)
    content = models.TextField()
    date = models.DateTimeField(default=timezone.now) 
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk': self.pk})


class Comments(models.Model):
    post = models.ForeignKey(Post,related_name='comments',on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
    date = models.DateTimeField(default=timezone.now)
    content = models.TextField()
    def get_absolute_url(self):
        return reverse('Home')

views.py

class CommentDetailView(DetailView):
    model = Comments
    template_name = 'CovidHelp/comment_response.html'
    context_object_name = 'comments'
    paginate_by = 10
    def get_queryset(self):
        post = get_object_or_404(Post, id=self.kwargs.get('pk'))
        return Comments.objects.filter(post=post).order_by('-date')

urls.py

path('post/<int:pk>/responses/', CommentDetailView.as_view(), name='responses')

但是我在尝试访问这样的 url 时遇到了错误:

未找到:/post/12/responses/

【问题讨论】:

  • 给定的代码部分不一致:reverse('post-detail'path(... name='responses'post-detail 的 URL 与 CommentDetail 的视图。
  • 您确定该对象存在于数据库中吗? get_object_or_404(Post, id=self.kwargs.get('pk'))
  • 即使完整配置没问题,错误也很明显:您似乎在数据库中没有 pk=12 的帖子。但是,似乎配置已损坏,实际上代码正在尝试获取带有帖子 ID 的评论实例。也许 id=12 的帖子存在,但 id=12 的评论不存在。
  • 向我们展示您的完整回溯。

标签: django django-models django-views


【解决方案1】:

您想返回一个帖子的 cmets 列表吗?

所以您需要使用Listview 而不是使用detailview 返回一个cmets 列表,然后使用get_queryset 按帖子ID 对其进行过滤。

【讨论】:

  • 谢谢我错误地添加了详细视图
猜你喜欢
  • 2016-10-11
  • 2014-09-05
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 2014-10-24
  • 2018-05-10
相关资源
最近更新 更多