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