Dear Django group,
using Django 1.11.3 with Python 2.7, please consider the following test:
def test_passwort_aendern(self):
u = User.objects.create_user("Test", "t...@example.com", "Passwort")
self.client.force_login(u)
response = self.client.post("/change_password/", {
"old_password": "Passwort",
"new_password1": "test",
"new_password2": "test",
}, follow=True)
self.assertContains(response, "Password successfully changed")
The test is successful if the URL maps to the (now unfortunately deprecated)
function-based view:
from django.contrib.auth import views as auth_views
urlpatterns = [
# ...
url(r'^change_password/$', auth_views.password_change,
{'post_change_redirect': 'lori:pwd_changed'}, name='change_password'),
]
If I use the class-based view in its place, the test fails:
urlpatterns = [
# ...
url(r'^change_password/$',
auth_views.PasswordChangeView.as_view(success_url='lori:pwd_changed'),
name='change_password'),
]
The test output is:
AssertionError: Couldn't retrieve content: Response code was 400 (expected 200)
When called in the browser, the result is an error page with:
SuspiciousOperation at /change_password/
The request's session was deleted before the request completed. The user may
have logged out in a concurrent request, for example.
The given stack trace is below.
I have so far not been able to figure out the relationship between the session
(which I guess the password change view expires intentionally?) and the error
messageā¦
Any ideas what may be causing this problem?
Best regards,
Carsten
Environment:
Request Method: POST
Request URL: http://localhost/lori/change_password/
Django Version: 1.11.3
Python Version: 2.7.3
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.staticfiles',
'django.contrib.messages',
'Lori',
'PerfMon',
'Spesen',
'Urlaubsantraege')
Installed Middleware:
['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',
'Lori.middleware.ggVerfallenMiddleware']
Traceback:
File
"/home/carsten/.virtualenvs/Zeiterfassung/lib/python2.7/site-packages/django/core/handlers/exception.py"
in inner
41. response = get_response(request)
File
"/home/carsten/.virtualenvs/Zeiterfassung/lib/python2.7/site-packages/django/utils/deprecation.py"
in __call__
142. response = self.process_response(request, response)
File
"/home/carsten/.virtualenvs/Zeiterfassung/lib/python2.7/site-packages/django/contrib/sessions/middleware.py"
in process_response
61. "The request's session was deleted before the
"
Exception Type: SuspiciousOperation at /change_password/
Exception Value: The request's session was deleted before the request
completed. The user may have logged out in a concurrent request, for example.
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/c6cae2db-3436-4342-6d6f-387a9206064e%40cafu.de.
For more options, visit https://groups.google.com/d/optout.