From d54638727ae23e8dc1e1ed0823efbd15806d9778 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Sun, 8 Feb 2015 12:24:11 -0600 Subject: [PATCH] [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 8099d33b6553c9ee7de779ae9d191a1bf22adbda from master --- django/template/context_processors.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/django/template/context_processors.py b/django/template/context_processors.py index dcd737f4ae6..a81fe71829d 100644 --- a/django/template/context_processors.py +++ b/django/template/context_processors.py @@ -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):