diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-12-16 20:13:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-16 20:13:17 +0100 |
| commit | 40165eecc40f9e223702a41a0cb0958515bb1f82 (patch) | |
| tree | 458f84b4290c76141dc496a1eef395c9dbca71fe /django | |
| parent | 068b2c072b0d28cbd5ea63811779629cdaad8638 (diff) | |
Fixed #33350 -- Reallowed using cache decorators with duck-typed HttpRequest.
Regression in 3fd82a62415e748002435e7bad06b5017507777c.
Thanks Terence Honles for the report.
Diffstat (limited to 'django')
| -rw-r--r-- | django/views/decorators/cache.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/django/views/decorators/cache.py b/django/views/decorators/cache.py index fdc5917738..417f3614f8 100644 --- a/django/views/decorators/cache.py +++ b/django/views/decorators/cache.py @@ -1,6 +1,5 @@ from functools import wraps -from django.http import HttpRequest from django.middleware.cache import CacheMiddleware from django.utils.cache import add_never_cache_headers, patch_cache_control from django.utils.decorators import decorator_from_middleware_with_args @@ -29,7 +28,8 @@ def cache_control(**kwargs): def _cache_controller(viewfunc): @wraps(viewfunc) def _cache_controlled(request, *args, **kw): - if not isinstance(request, HttpRequest): + # Ensure argument looks like a request. + if not hasattr(request, 'META'): raise TypeError( "cache_control didn't receive an HttpRequest. If you are " "decorating a classmethod, be sure to use " @@ -48,7 +48,8 @@ def never_cache(view_func): """ @wraps(view_func) def _wrapped_view_func(request, *args, **kwargs): - if not isinstance(request, HttpRequest): + # Ensure argument looks like a request. + if not hasattr(request, 'META'): raise TypeError( "never_cache didn't receive an HttpRequest. If you are " "decorating a classmethod, be sure to use @method_decorator." |
