为什么Django django.contrib.auth.authenticate需要就地参数?

时间:2018-03-06 06:43:54

标签: python django authentication

为什么Django身份验证功能仅适用于此?

user=authenticate(
        username=request.POST['username'],
        password=request.POST['password']
    )

而不是

user=authenticate(
        request.POST['username'],
        request.POST['password']
    )

1 个答案:

答案 0 :(得分:3)

可能有许多不同的身份验证后端,他们可能使用与用户名和密码不同的身份验证方式,即某种令牌。为了保持authenticate()方法的通用性,必须以这种方式实现 Official documentation表示"它将凭据作为关键字参数,用户名密码作为默认情况。"关键部分是:表示默认情况 可以作为位置参数给出的唯一参数是可选的request参数。