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

を使用することで、投稿がない場合に 404 を返すようにposts = get_list_or_404(Post, category__in=categories)明示的に要求しています。

試す:

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

于 2012-10-08T11:10:18.697 に答える