user_passes_test装饰器重定向到登录,即使结果为True

时间:2015-05-09 17:33:55

标签: python django

这是我的装饰者:

def is_clinic(user):
    user.groups.filter(name='Klinik').exists()

我的观点:

class Index(View):
    @method_decorator(login_required)
    @method_decorator(user_passes_test(is_clinic, login_url='/clinic_only.html'))
    def get(self, request):
        return render(request,"index.html")

用户在群组中。我用shell测试它,装饰器肯定会返回True。

当我导航到网址时,django会将我重定向到clinic_only.html

1 个答案:

答案 0 :(得分:3)

您忘记返回查询结果。因此,您的函数隐式返回None,并且装饰器重定向到登录页面。你应该:

def is_clinic(user):
    return user.groups.filter(name='Klinik').exists()