自我没有定义?

时间:2019-10-02 04:50:51

标签: python django django-views

我有一个登录视图,该视图检查登录用户是客户端还是试验用户,并适当地重定向他们,但是我不断收到自我未定义的错误。任何帮助将不胜感激。

views.py

VID

3 个答案:

答案 0 :(得分:2)

您的代码中包含以下内容:

    if user.role == 'client':
        def ef (self):
            return redirect(reverse('dashboard', kwargs={"pk": self.pk}))
    else:
        return redirect(reverse('pilot_dashboard', kwargs={"pk": self.pk}))

def ef (self)是不需要的,也不能以这种方式工作。只需删除那个。

此外,您还使用self.pk,在那儿是不可能的。如果您想访问用户pk,只需使用user.pk,因为您的用户保存在变量user中,而不是self中。

答案 1 :(得分:0)

您不需要构造:

def ef (self):

实际上,您不必返回函数,而必须返回重定向。

答案 2 :(得分:0)

希望以下更改可以解决您的问题。

def signin (request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']

        user = auth.authenticate(username=username, password=password)

        if user is not None:
            auth.login(request,user)
            messages.success(request, 'You are now logged in')
            if user.role == 'client':
                return redirect(reverse('dashboard', kwargs={"pk": user.pk}))
            else:
                return redirect(reverse('pilot_dashboard', kwargs={"pk": user.pk}))
        else:
            messages.error(request, 'Invalid Credentials')
            return redirect ('login')

    else:
        return render (request, 'accounts/signin.html')

主要问题是这里没有self实例。我猜这是用户。