This Django app provides a suite of utilities to disable caching in your sensitive views.
- Python >= 3.8
- Django >= 3.2
-
Install the package via pip:
pip install django-never-cache
-
Add
django_never_cacheto yourINSTALLED_APPSinsettings.py:INSTALLED_APPS = [ ... "django_never_cache", ... ]
Use NoCacheMixin to disable caching for a view:
from django.views.generic import TemplateView
from django_never_cache.mixins import NoCacheMixin
class MyView(NoCacheMixin, TemplateView):
template_name = "my_template.html"Use PrivateAreaMixin to require login and disable caching for a private area:
from django.views.generic import TemplateView
from django_never_cache.mixins import PrivateAreaMixin
class MyView(PrivateAreaMixin, TemplateView):
template_name = "my_private_template.html"Use NeverCacheMiddleware if you want to disable caching for the whole site:
MIDDLEWARE = [
...
"django_never_cache.middlewares.NeverCacheMiddleware",
]If you have added NeverCacheMiddleware to MIDDLEWARE, you can re-enable caching for a specific view using the allow_cache decorator:
from django.utils.decorators import method_decorator
from django.views.generic import TemplateView
from django_never_cache.decorators import allow_cache
@method_decorator(allow_cache, name="dispatch")
class MyCachedView(TemplateView):
template_name = "my_cached_template.html"allow_cache supports both synchronous and asynchronous views.
- tox
- Golang >= 1.21
To run the tests, run the following command:
toxYou can contribute to this project on GitHub.
- Fork the repository.
- Create a new branch:
git checkout -b my-branch-name. - Install
pre-commitwithpre-commit installand make your changes. - Commit your changes:
git commit -am "Add some feature". - Push your branch:
git push origin my-branch-name. - Create a pull request.
This project is released under the MIT License.