Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想向Django DetailView添加条件_Python_Django_Django Generic Views_Detailview - Fatal编程技术网

Python 我想向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'

我使用的是Django通用视图,DetailView。 但我想阻止那些还没有通过电子邮件确认的用户访问详细帖子。 我在用户模型中有一个电子邮件确认字段

我的代码是:

@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