我想向 Django DetailView 添加条件
I would like to add condition to Django DetailView
我正在使用 Django 通用视图 DetailView。
但我想阻止用户访问尚未 email_confirmed 的详细信息 post。
我在用户模型中有一个 email_confirmed 字段。
我的代码是:
@method_decorator(login_required(login_url='/login/'), name='dispatch')
class RecruitView(generic.DetailView):
model = Recruit
template_name = 'recruit.html'
我想补充:
if not request.user.email_confirmed:
error_message = "you did not confirmed yet. please check your email."
return render(request, 'info.html', {'error_message': error_message})
else: pass
如何将此条件添加到 DetailView?
(我试图覆盖 'as_view' 但我不知道该怎么做)
我会使用 PermissionRequiredMixin
. With this you can specify specific permissions users need to have or override the has_permission
方法。
from django.contrib.auth.mixins import PermissionRequiredMixin
class RecruitView(PermissionRequiredMixin, generic.DetailView):
...
login_url = '/login/'
permission_denied_message = 'you did not confirmed yet. please check your email.'
def has_permission(self):
return self.request.user.email_confirmed
这会将没有 email_confirmed
的用户重定向到 login_url
,您可以在其中显示错误消息。为了使用 index.html
模板,您可能需要覆盖 handle_no_permission
方法。
我正在使用 Django 通用视图 DetailView。 但我想阻止用户访问尚未 email_confirmed 的详细信息 post。 我在用户模型中有一个 email_confirmed 字段。
我的代码是:
@method_decorator(login_required(login_url='/login/'), name='dispatch')
class RecruitView(generic.DetailView):
model = Recruit
template_name = 'recruit.html'
我想补充:
if not request.user.email_confirmed:
error_message = "you did not confirmed yet. please check your email."
return render(request, 'info.html', {'error_message': error_message})
else: pass
如何将此条件添加到 DetailView?
(我试图覆盖 'as_view' 但我不知道该怎么做)
我会使用 PermissionRequiredMixin
. With this you can specify specific permissions users need to have or override the has_permission
方法。
from django.contrib.auth.mixins import PermissionRequiredMixin
class RecruitView(PermissionRequiredMixin, generic.DetailView):
...
login_url = '/login/'
permission_denied_message = 'you did not confirmed yet. please check your email.'
def has_permission(self):
return self.request.user.email_confirmed
这会将没有 email_confirmed
的用户重定向到 login_url
,您可以在其中显示错误消息。为了使用 index.html
模板,您可能需要覆盖 handle_no_permission
方法。