Python 我想向Django DetailView添加条件
我使用的是Django通用视图,DetailView。 但我想阻止那些还没有通过电子邮件确认的用户访问详细帖子。 我在用户模型中有一个电子邮件确认字段 我的代码是:Python 我想向Django DetailView添加条件,python,django,django-generic-views,detailview,Python,Django,Django Generic Views,Detailview,我使用的是Django通用视图,DetailView。 但我想阻止那些还没有通过电子邮件确认的用户访问详细帖子。 我在用户模型中有一个电子邮件确认字段 我的代码是: @method_decorator(login_required(login_url='/login/'), name='dispatch') class RecruitView(generic.DetailView): model = Recruit template_name = 'recruit.html'
@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',但我不知道怎么做)我会使用。通过此选项,您可以指定用户需要拥有的特定权限或重写该方法
这会将没有确认的
电子邮件的用户重定向到登录url
,您可以在那里显示错误消息。为了使用index.html
模板,您可能需要重写该方法。因为您没有检查权限,所以使用和重写test\u func
可能更干净。哇!这是我的第一个问题,我印象深刻!!非常感谢你,你救了我:)
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