[1.8.x] Simplified the lazy CSRF token implementation in csrf context processor.

This significantly improves performance on PyPy. The previous
implementation would generate a new class on every single request,
which is relatively slow.

Backport of 8099d33b65 from master
This commit is contained in:
Alex Gaynor 2015-02-08 12:24:11 -06:00 committed by Tim Graham
parent ee86bf24d2
commit d54638727a
1 changed files with 2 additions and 4 deletions

View File

@ -11,9 +11,8 @@ from __future__ import unicode_literals
from django.conf import settings
from django.middleware.csrf import get_token
from django.utils import six
from django.utils.encoding import smart_text
from django.utils.functional import lazy
from django.utils.functional import SimpleLazyObject, lazy
def csrf(request):
@ -30,9 +29,8 @@ def csrf(request):
return 'NOTPROVIDED'
else:
return smart_text(token)
_get_val = lazy(_get_val, six.text_type)
return {'csrf_token': _get_val()}
return {'csrf_token': SimpleLazyObject(_get_val)}
def debug(request):