我有一个登录视图,该视图检查登录用户是客户端还是试验用户,并适当地重定向他们,但是我不断收到自我未定义的错误。任何帮助将不胜感激。
views.py
VID
答案 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
实例。我猜这是用户。