{"id":23565,"library":"django-compression-middleware","title":"django-compression-middleware","description":"Django middleware to compress HTTP responses using Brotli, Zstd, Gzip, or Deflate, with automatic content negotiation. Provides both WSGI and ASGI support. Current version 0.5.0, released sporadically.","status":"active","version":"0.5.0","language":"python","source_language":"en","source_url":"https://github.com/friedelwolff/django-compression-middleware","tags":["django","middleware","compression","brotli","zstd","gzip","deflate","asgi","wsgi"],"install":[{"cmd":"pip install django-compression-middleware","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Runtime requirement; middleware runs within Django request/response cycle","package":"django","optional":false},{"reason":"Required for Brotli compression (most efficient algorithm)","package":"brotli","optional":true},{"reason":"Required for Zstd compression","package":"zstandard","optional":true}],"imports":[{"wrong":"from compression_middleware import CompressionMiddleware","symbol":"CompressionMiddleware","correct":"from compression_middleware import CompressionMiddleware"}],"quickstart":{"code":"# settings.py\nMIDDLEWARE = [\n    'django.middleware.security.SecurityMiddleware',\n    'compression_middleware.CompressionMiddleware',\n    # ... other middleware\n]\n\n# Optional: configure compression algorithms\nCOMPRESSION_ALGORITHMS = ['br', 'zstd', 'gzip', 'deflate']\nCOMPRESSION_MIN_LENGTH = 150  # bytes; default is 150","lang":"python","description":"Add CompressionMiddleware to MIDDLEWARE list. Place it after SecurityMiddleware but before other middleware for best performance. Optionally set COMPRESSION_ALGORITHMS and COMPRESSION_MIN_LENGTH in settings."},"warnings":[{"fix":"Ensure order: SecurityMiddleware, CompressionMiddleware, then others.","message":"Place middleware after SecurityMiddleware but before SessionMiddleware and CommonMiddleware. Incorrect order can break compression or security headers.","severity":"breaking","affected_versions":"all"},{"fix":"Set COMPRESSION_MIN_LENGTH = 0 in settings to compress all responses.","message":"The library does NOT compress responses smaller than COMPRESSION_MIN_LENGTH. Default is 150 bytes. If you expect small responses to be compressed, reduce this value.","severity":"gotcha","affected_versions":"all"},{"fix":"Override by subclassing or adjusting middleware logic if needed.","message":"Only responses with a status code in the 200-399 range are compressed. 404, 500, etc., are skipped.","severity":"gotcha","affected_versions":"all"},{"fix":"Use 'from compression_middleware import CompressionMiddleware'.","message":"In version 0.5.0, the import path from 'compression_middleware.middleware' was removed. Must import directly from 'compression_middleware'.","severity":"deprecated","affected_versions":">=0.5.0"}],"env_vars":null,"search_vec":"'0.5.0':29 'asgi':25,39 'automat':18 'brot':12,35 'compress':3,8,34 'content':19 'current':27 'deflat':16,38 'django':2,5,32 'django-compression-middlewar':1 'gzip':14,37 'http':9 'middlewar':4,6,33 'negoti':20 'provid':21 'releas':30 'respons':10 'sporad':31 'support':26 'use':11 'version':28 'wsgi':23,40 'zstd':13,36","created_at":"2026-05-01T08:08:26.917995+00:00","updated_at":"2026-05-01T08:08:26.917995+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\nImportError: cannot import name 'CompressionMiddleware' from 'compression_middleware' (/tmp/tmpsdiomi7i/venv/lib/python3.12/site-packages/compression_middleware/__init__.py)"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.5.0","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/friedelwolff/django-compression-middleware","docs":null,"changelog":null,"pypi":"https://pypi.org/project/django-compression-middleware/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["web-framework"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}