django-method-override
raw JSON → 1.0.4 verified Fri May 01 auth: no python maintenance
Django middleware that allows overriding the HTTP method via a form field or header (e.g., X-HTTP-Method-Override). Current version 1.0.4. Light maintenance, no longer actively developed.
pip install django-method-override Common errors
error ImportError: No module named 'method_override' ↓
cause Trying to import using hyphens instead of underscores.
fix
Use 'django_method_override' (underscores) in import statements.
error ImproperlyConfigured: MethodOverrideMiddleware is not a subclass of MiddlewareMixin (or similar Django version error) ↓
cause Django 2.0+ changed middleware base class; older middleware class may not be compatible.
fix
Use Django <2.0 or patch middleware to extend MiddlewareMixin; check version compatibility.
Warnings
gotcha The middleware only overrides methods on POST requests. Overriding on GET is not supported. ↓
fix Ensure your override only happens on POST submissions (standard HTML form behavior).
gotcha If multiple method override values are provided (both header and param), the param takes precedence. This can be surprising if you expect header priority. ↓
fix Be consistent: use either header or form field, not both, or check source for ordering.
Imports
- MethodOverrideMiddleware wrong
from method_override.middleware import MethodOverrideMiddlewarecorrectfrom django_method_override.middleware import MethodOverrideMiddleware - process_view wrong
from django_method_override import process_viewcorrect(middleware method) no explicit import needed
Quickstart
# settings.py
MIDDLEWARE = [
...
'django_method_override.middleware.MethodOverrideMiddleware',
...
]
# In a form, add a hidden field:
# <input type="hidden" name="_method" value="DELETE">
# Or send header: X-HTTP-Method-Override: DELETE