{"id":23580,"library":"django-method-override","title":"django-method-override","description":"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.","status":"maintenance","version":"1.0.4","language":"python","source_language":"en","source_url":"https://github.com/marirs/django-method-override","tags":["django","middleware","http-method-override","rest"],"install":[{"cmd":"pip install django-method-override","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Core dependency; middleware integrates with Django request/response.","package":"Django","optional":false}],"imports":[{"note":"Wrong hyphen vs underscore; the package name uses hyphens but Python import uses underscores.","wrong":"from method_override.middleware import MethodOverrideMiddleware","symbol":"MethodOverrideMiddleware","correct":"from django_method_override.middleware import MethodOverrideMiddleware"},{"note":"process_view is a method on the middleware class, not a standalone function.","wrong":"from django_method_override import process_view","symbol":"process_view","correct":"(middleware method) no explicit import needed"}],"quickstart":{"code":"# settings.py\nMIDDLEWARE = [\n    ...\n    'django_method_override.middleware.MethodOverrideMiddleware',\n    ...\n]\n\n# In a form, add a hidden field:\n# <input type=\"hidden\" name=\"_method\" value=\"DELETE\">\n# Or send header: X-HTTP-Method-Override: DELETE","lang":"python","description":"Add middleware to MIDDLEWARE list in settings.py. Then submit a POST with _method field or X-HTTP-Method-Override header to override the HTTP method."},"warnings":[{"fix":"Ensure your override only happens on POST submissions (standard HTML form behavior).","message":"The middleware only overrides methods on POST requests. Overriding on GET is not supported.","severity":"gotcha","affected_versions":"all"},{"fix":"Be consistent: use either header or form field, not both, or check source for ordering.","message":"If multiple method override values are provided (both header and param), the param takes precedence. This can be surprising if you expect header priority.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use 'django_method_override' (underscores) in import statements.","cause":"Trying to import using hyphens instead of underscores.","error":"ImportError: No module named 'method_override'"},{"fix":"Use Django <2.0 or patch middleware to extend MiddlewareMixin; check version compatibility.","cause":"Django 2.0+ changed middleware base class; older middleware class may not be compatible.","error":"ImproperlyConfigured: MethodOverrideMiddleware is not a subclass of MiddlewareMixin (or similar Django version error)"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}