-1

関数ベースのビューを使用して詳細ビューを作成しようとしています。このビューでは、既に公開されている投稿とドラフトではない投稿のみを表示する必要があります。

def singlePost(request, slug_post, slug_category):
    post_category = get_object_or_404(BlogCategory, slug_category=slug_category)
    if post_filter == BlogPost.objects.filter(draft=True):
        raise PermissionDenied
    if post_filter == BlogPost.objects.filter(publishing_date__gt=datetime.datetime.now()):
        raise PermissionDenied
    else:
        post_filter == BlogPost.objects.all()
    post_details = get_object_or_404(post_filter, slug_post=slug_post)
    category_post_details = BlogPost.objects.filter(post_category=post_category)
    context = {
        "post_category": post_category,
        "post_details": post_details,
        "category_post_details": category_post_details,
        }
    template = 'blog/reading/single_post.html'
    return render(request, template, context)

しかし、これを使用すると、次のエラー メッセージが表示されます。

名前「post_filter」は定義されていません

どうすれば解決できますか?

注意:ビューはそのようにうまく機能します

def singlePost(request, slug_post, slug_category):
    post_category = get_object_or_404(BlogCategory, slug_category=slug_category)
    post_details = get_object_or_404(BlogPost, slug_post=slug_post)
    category_post_details = BlogPost.objects.filter(post_category=post_category)
    context = {
        "post_category": post_category,
        "post_details": post_details,
        "category_post_details": category_post_details,
        }
    template = 'blog/reading/single_post.html'
    return render(request, template, context)
4

1 に答える 1

1

与えられた情報に基づいて、次のアプローチを使用することをお勧めします。

1 つのフィルターを使用してブログ投稿の基準を取得し、存在しない場合はエラーを発生させます。

post_filter = BlogPost.objects.filter(draft=False,
                                      publishing_date__lt=datetime.datetime.now()):
if not post_filter.exists():
    raise PermissionDenied
else:
    post_details = get_object_or_404(post_filter, slug_post=slug_post)

于 2019-07-15T16:03:01.067 に答える