【发布时间】:2021-01-23 01:03:00
【问题描述】:
我想这样,如果用户屏蔽了我或者我屏蔽了用户,我想将他们重定向回主页,并且不允许他们查看详细信息页面。因为这是一个基于类的视图,你有什么方法可以让我实现我想要的并且不影响已经存在的吗?
我尝试了各种各样的事情但没有成功,我的朋友都无法解决这个问题。我不能直接使用 return redirect(HomeFeed:main) 因为我在同一个视图中有其他上下文,我需要它在模板中返回。
我也不想使用 UserMixin 的 test_funct(),它会显示 403 Forbidden 错误,因为它对用户不友好,也不会向用户显示到底发生了什么。这就是为什么我想做一个重定向,然后是 django 消息,以告知他们为什么他们无法查看该页面
class DetailBlogPostView(BlogPostMixin,DetailView):
template_name = 'HomeFeed/detail_blog.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
blog_post=self.get_object()
blog_post.save()
context['blog_post'] = blog_post
account = Account.objects.all()
context['account'] = account
if blog_post.interest_set.exists():
context["interest_pk"]=blog_post.interest_set.first().pk
if blog_post.author in self.request.user.blocked_users.all():
messages.warning(self.request, 'You cannot view post of ideas authors that you have blocked.', extra_tags='blockedposts')
hi = redirect('HomeFeed:main')
context['hi'] = hi
if blog_post.author in self.request.user.blocked_users.all():
messages.warning(self.request, 'You cannot view post of ideas authors that have blocked you.', extra_tags='blockeduposts')
hi = redirect('HomeFeed:main')
context['bye'] = bye
return context
【问题讨论】:
-
请编辑标题以使其具有描述性,“困难的 Django”和“紧急”不应该出现在任务标题中。
标签: django django-models django-views django-forms django-templates