KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The official documentation is a bit messy: 'before' & 'after' are used for ordering MiddleWare in a tuple, but in some places 'before'&'after' refers to request-response phases. Also, 'should be first/last' are mixed and it's not clear which one to use as 'first'. I do understand the difference.. however it seems to complicated for a newbie in Django. Can you suggest some correct ordering for builtin MiddleWare classes (assuming we enable all of them) and — most importantly — explain WHY one goes before/after other ones? here's the list, with the info from docs I managed to find: UpdateCacheMiddleware Before those that modify 'Vary:' SessionMiddleware , GZipMiddleware , LocaleMiddleware GZipMiddleware Before any MW that may change or use the response body After UpdateCacheMiddleware : Modifies 'Vary:' ConditionalGetMiddleware Before CommonMiddleware : uses its 'Etag:' header when USE_ETAGS=True SessionMiddleware After UpdateCacheMiddleware : Modifies 'Vary:' Before TransactionMiddleware : we don't need transactions here LocaleMiddleware , One of the topmost, after SessionMiddleware, CacheMiddleware After UpdateCacheMiddleware : Modifies 'Vary:' After SessionMiddleware : uses session data CommonMiddleware Before any MW that may change the response (it calculates ETags) After GZipMiddleware so it won't calculate an E-Tag on gzipped contents Close to the top: it redirects when APPEND_SLASH or PREPEND_WWW CsrfViewMiddleware Before any view middleware t
Tags (comma-separated)
Save Edits
Cancel