Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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 自我定义的?_Python_Django_Django Views - Fatal编程技术网

Python 自我定义的?

Python 自我定义的?,python,django,django-views,Python,Django,Django Views,我有一个登录视图,可以检查登录用户是客户机还是飞行员,并适当地重定向他们,但我不断收到自定义错误。任何帮助都将不胜感激 视图.py def signin (request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = auth.authenticate(username=username, pas

我有一个登录视图,可以检查登录用户是客户机还是飞行员,并适当地重定向他们,但我不断收到自定义错误。任何帮助都将不胜感激

视图.py

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':
            def ef (self):
                return redirect(reverse('dashboard', kwargs={"pk": self.pk}))
        else:
            return redirect(reverse('pilot_dashboard', kwargs={"pk": self.pk}))
    else:
        messages.error(request, 'Invalid Credentials')
        return redirect ('login')

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

您不需要构建:

def ef (self):

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

您不需要构造:

def ef (self):

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

您的代码中有以下内容:

    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
您的代码中有以下内容:

    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
,希望下面的更改能够解决您的问题

def登录(请求):
如果request.method==“POST”:
username=request.POST['username']
password=request.POST['password']
user=auth.authenticate(用户名=用户名,密码=密码)
如果用户不是无:
身份验证登录(请求、用户)
messages.success(请求“您现在已登录”)
如果user.role==“客户端”:
返回重定向(反向('dashboard',kwargs={“pk”:user.pk}))
其他:
返回重定向(反向('pilot_dashboard',kwargs={“pk”:user.pk}))
其他:
消息。错误(请求“无效凭据”)
返回重定向('登录')
其他:
返回呈现(请求'accounts/signin.html')

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

希望以下改变能解决您的问题

def登录(请求):
如果request.method==“POST”:
username=request.POST['username']
password=request.POST['password']
user=auth.authenticate(用户名=用户名,密码=密码)
如果用户不是无:
身份验证登录(请求、用户)
messages.success(请求“您现在已登录”)
如果user.role==“客户端”:
返回重定向(反向('dashboard',kwargs={“pk”:user.pk}))
其他:
返回重定向(反向('pilot_dashboard',kwargs={“pk”:user.pk}))
其他:
消息。错误(请求“无效凭据”)
返回重定向('登录')
其他:
返回呈现(请求'accounts/signin.html')

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

谢谢你的回复。我删除了def ef(self)并按建议添加了user.self,但现在客户端可以登录到pilot dashboard,这不是我想要的。@flow我希望这只是对
user.self
的输入错误;)在
客户端
/
仪表板
-视图中,您还必须验证现有组的用户。您的
登录
-视图在登录时处理重定向,但如果允许用户显示重定向页面,则必须在那里执行。(例如,他可以在浏览器的url中添加
pilot\uuu
)谢谢你的回复。我删除了def ef(self)并按建议添加了user.self,但现在客户端可以登录到pilot dashboard,这不是我想要的。@flow我希望这只是对
user.self
的输入错误;)在
客户端
/
仪表板
-视图中,您还必须验证现有组的用户。您的
登录
-视图在登录时处理重定向,但如果允许用户显示重定向页面,则必须在那里执行。(例如,他可以在浏览器的url中添加
pilot\uuu
)谢谢你的回复。我删除了def ef(self),但仍然得到了错误。谢谢你的回复。我删除了def ef(self),但仍然得到了错误。