没有帖子信息而是404错误

时间:2012-10-08 10:50:33

标签: django

如何显示没有帖子的信息而不是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))

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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))

并确保在by_category.html内打印出错误{{message}}。