0

如何显示没有帖子而不是404错误的信息?

在 django 中这样的事情多久发生一次?

def post_by_category(request, slug):
    category = get_object_or_404(Category, slug=slug)
    categories = category.get_descendants(include_self=True)
    posts = get_list_or_404(Post, category__in=categories)

    return render_to_response("by_category.html",
                              {'posts': posts, context_instance=RequestContext(request))
4

2 回答 2

1

get_object_or_404只是一个方便快捷方式,其主要目的是提高Http404.

因此,如果您不想提出404(我认为这是您的问题),那么您根本不应该使用快捷方式,而是自己处理这种情况。

这些方面的东西:

def my_view(request):
    try:
        my_object = MyModel.objects.get(pk=1)
    except MyModel.DoesNotExist:
        # render whatever you like
于 2012-10-08T11:08:59.127 回答
1

通过使用posts = get_list_or_404(Post, category__in=categories),您明确要求它在没有帖子的情况下返回 404。

尝试:

posts = Post.objects.filter(category__in=categories)
if posts:
    return render_to_response("by_category.html",
                              {'posts': posts}, context_instance=RequestContext(request))
else:
    return render_to_response("by_category.html",
                              {'message': 'No posts found!'}, context_instance=RequestContext(request))

并确保打印出错误 {{ message }} inside by_category.html

于 2012-10-08T11:10:18.697 回答