我正在开发博客的后端,我需要区分帖子的类型:已发布、未来帖子、草稿。为此,我从过去请求中的指示开始:
在我意识到所有类型的帖子总是在线后,感谢这个解决方案,我只能将已发布的帖子放到网上。
在我的博客中,有两种用户类型:is_staff(默认的 Django 类型)、is_user(在我的注册模型中)。还有另一种类型是匿名用户,没有任何类型的注册的用户使用谷歌或其他解决方案到达我的博客。
因此,我开发了一个视图,仅当用户是is_staff但我看到Forbidden 错误时才显示草稿和未来的帖子。
def singlePost(request, slug_post, slug_category):
post_category = get_object_or_404(BlogCategory, slug_category=slug_category)
post_filter = BlogPost.objects.filter(draft=False, publishing_date__lt=datetime.datetime.now())
if not request.user.is_authenticated:
post_filter = BlogPost.objects.filter(draft=False, publishing_date__lt=datetime.datetime.now())
raise PermissionDenied
elif request.user.is_user:
post_filter = BlogPost.objects.filter(draft=False, publishing_date__lt=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)
我该如何解决?自己制作我的个人博客是一个了解更多关于 Python 和 Django 的机会。
注意:视图以这种方式工作正常
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)
注意: 我想获得的是像 Wordpress 这样的后端。使用 Wordpress,您可以创建草稿或预定帖子,这种类型的帖子不在线,并且只有登录用户才能阅读。