summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsreehari1997 <sreeharivijayan619@gmail.com>2021-10-12 13:39:29 +0530
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-10-18 09:45:52 +0200
commite2f778d57947d168a875159e6df075255eea4bbc (patch)
treed3c5f0be4ea0cb7cd25d12638310a7ca31b29d95
parent86971c40909430a798e4e55b140004c4b1fb02ff (diff)
Fixed #33172 -- Added example of modifying upload handlers on the fly for CBVs.
-rw-r--r--docs/topics/http/file-uploads.txt21
1 files changed, 21 insertions, 0 deletions
diff --git a/docs/topics/http/file-uploads.txt b/docs/topics/http/file-uploads.txt
index ca272d785a..c946662bba 100644
--- a/docs/topics/http/file-uploads.txt
+++ b/docs/topics/http/file-uploads.txt
@@ -271,3 +271,24 @@ list::
@csrf_protect
def _upload_file_view(request):
... # Process request
+
+ If you are using a class-based view, you will need to use
+ :func:`~django.views.decorators.csrf.csrf_exempt` on its
+ :meth:`~django.views.generic.base.View.dispatch` method and
+ :func:`~django.views.decorators.csrf.csrf_protect` on the method that
+ actually processes the request. Example code::
+
+ from django.utils.decorators import method_decorator
+ from django.views import View
+ from django.views.decorators.csrf import csrf_exempt, csrf_protect
+
+ @method_decorator(csrf_exempt, name='dispatch')
+ class UploadFileView(View):
+
+ def setup(self, request, *args, **kwargs):
+ request.upload_handlers.insert(0, ProgressBarUploadHandler(request))
+ super().setup(request, *args, **kwargs)
+
+ @method_decorator(csrf_protect)
+ def post(self, request, *args, **kwargs):
+ ... # Process request