Django Compat
raw JSON → 1.0.15 verified Fri May 01 auth: no python maintenance
A compatibility layer for Django versions 1.4 through 1.11, providing backports and forwards-compatibility for features across major Django releases. Version 1.0.15 is the latest, likely in maintenance mode as Django 2.0+ is supported natively. Release cadence is low, with occasional updates for new Django versions.
pip install django-compat==1.0.15 Common errors
error ModuleNotFoundError: No module named 'compat' ↓
cause Trying to import `compat` (the old import path) instead of `django_compat`.
fix
Use
from django_compat import ... or import django_compat. error ImportError: cannot import name 'patterns' from 'django_compat' ↓
cause The `patterns` function is deprecated/removed in newer Django and may not be available in all versions of django-compat.
fix
Use
django.urls.re_path and django.urls.path instead, or verify your django-compat version supports patterns. Warnings
breaking The package is named `django-compat` on PyPI but the import module is `django_compat`. Using `import compat` will raise ModuleNotFoundError. ↓
fix Use `from django_compat import ...` or `import django_compat` instead of `compat`.
deprecated Django 1.11 and earlier are end-of-life. django-compat is only useful for projects stuck on old Django versions. For Django 2.0+, use native Django APIs. ↓
fix Upgrade Django and remove django-compat dependency.
gotcha Some backported functions (like `render_to_string` with new signature) only work on specific Django versions. Check the compatibility docs before relying on a feature. ↓
fix Consult docs/compatibility.py in the repo to verify feature support for your Django version.
Imports
- compat wrong
from compat import compatcorrectfrom django_compat import compat - include
from django_compat.urls import include - patterns wrong
from compat.urls import patternscorrectfrom django_compat.urls import patterns
Quickstart
from django_compat.urls import include, patterns
from django_compat import compat
# Example: use compat.atomic to get atomic context manager on older Django
from django_compat import compat
with compat.atomic():
# Your transaction code
pass