diff options
| author | Ben Lomax <lomax.on.the.run@gmail.com> | 2023-07-08 21:54:37 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-07-10 11:43:36 +0200 |
| commit | b7a17b0ea0a2061bae752a3a2292007d41825814 (patch) | |
| tree | ea2607dfea49472007ee2318684e497dc91a71f1 /django/views | |
| parent | fb1c7635065321d415ad8182caf986a824bf9650 (diff) | |
Refs #31949 -- Made @vary_on_(cookie/headers) decorators work with async functions.
Diffstat (limited to 'django/views')
| -rw-r--r-- | django/views/decorators/vary.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/django/views/decorators/vary.py b/django/views/decorators/vary.py index b1459295d2..9beab8b4db 100644 --- a/django/views/decorators/vary.py +++ b/django/views/decorators/vary.py @@ -1,5 +1,7 @@ from functools import wraps +from asgiref.sync import iscoroutinefunction + from django.utils.cache import patch_vary_headers @@ -16,13 +18,21 @@ def vary_on_headers(*headers): """ def decorator(func): - @wraps(func) - def inner_func(*args, **kwargs): - response = func(*args, **kwargs) - patch_vary_headers(response, headers) - return response + if iscoroutinefunction(func): + + async def _view_wrapper(request, *args, **kwargs): + response = await func(request, *args, **kwargs) + patch_vary_headers(response, headers) + return response + + else: + + def _view_wrapper(request, *args, **kwargs): + response = func(request, *args, **kwargs) + patch_vary_headers(response, headers) + return response - return inner_func + return wraps(func)(_view_wrapper) return decorator |
