Reputation: 93
I'm trying to generate a default token to send a reset password email but when the code runs default_token_generator.make_token(user) the user has no last_login property. What am I doing wrong here?
AttributeError at /devices/0/forgot 'QuerySet' object has no attribute '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)
Upvotes: 1
Views: 929
Reputation: 4068
In user = User.objects.filter(email__iexact=email)
- filter()
returns QuerySet, make_token()
expects User model instance. Try user = User.objects.get(email__iexact=email)
instead.
Upvotes: 1
Reputation: 3506
In your MIDDLEWARE_CLASSES section provide
django.contrib.auth.middleware.AuthenticationMiddleware',
is listed, as this is what provides Django user with this property, so the resulting MIDDLEWARE_CLASSES is something like
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',
]
Upvotes: 0