2016-07-07 34 views
1

我试图生成默认令牌发送重置密码电子邮件,但是当代码运行default_token_generator.make_token(用户)用户没有LAST_LOGIN财产。我在这里做错了什么?Django的Allauth错误使用default_token_generator

AttributeError的在/设备/ 0 /忘记 '查询集' 对象没有属性 'LAST_LOGIN'

  user = User.objects.filter(email__iexact=email) 
      if Provision.objects.get(device=device, user=user): 
       # email_address = EmailAddress.objects.get_primary(user=user) 
       token = default_token_generator.make_token(user) ... 
       site = Site.objects.get_current() 
       # send the password reset email 
       path = reverse("account_reset_password_from_key", kwargs=dict(uidb36=int_to_base36(user.pk), key=token)) 
       url = '%s://%s%s' % (app_settings.DEFAULT_HTTP_PROTOCOL, site.domain, path) 

回答

0

在你MIDDLEWARE_CLASSES部提供

django.contrib.auth.middleware.AuthenticationMiddleware', 

被列出,因为这是提供具有此属性的Django用户,因此生成的MIDDLEWARE_CLASSES类似于

MIDDLEWARE_CLASSES = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'django.contrib.redirects.middleware.RedirectFallbackMiddleware', 
] 
+0

感谢德米特罗,以前的答案解决了这个问题。 –

1

user = User.objects.filter(email__iexact=email) - filter()返回QuerySet,make_token()需要用户模型实例。改为尝试user = User.objects.get(email__iexact=email)

+0

真棒感谢兄弟! –