Provide a workaround to use different method from GET or POST inside HTML forms
Project description
django-http-method
Provide a workaround to use different method than GET or POST inside HTML forms in django templates. Works only with Class Based View.
Installation
From source code:
python setup.py install
From pip:
pip install django-http-method
Usage
Add django_http_method to your settings.INSTALLED_APPS
INSTALLED_APPS = (
[...],
django_http_method,
[...],
)
Add the mixin to a CBV
from django.views.generic import View
from django_http_method import HttpMethodMixin
class TestView(HttpMethodMixin, View):
def get(self, request):
pass
def delete(self, request):
pass
def put(self, request):
pass
[...]
In your template, load http_method and use {% http_[method] %}
in your forms:
{% load http_method %}
<form action="/" method="post">
{% csrf_token %}
{% http_put %}
[...]
<button type="submit">Send a PUT request</button>
</form>
<form action="/" method="post">
{% csrf_token %}
{% http_patch %}
[...]
<button type="submit">Send a PATCH request</button>
</form>
The corresponding method of your View will now be called. For instance, if {% http_put %}
was used, then TestView.put()
will be called and any request parameter will be in request.PUT
.
Changelog
1.0.2
- Added
pyaml
to setup requirement.
1.0.1
- Now use
yaml.safe_load()
instead ofyaml.load()
- Added python 3.7 and django 2.1 to test matrix
1.0.0
- Initial release for python3.4+ and django1.8, 1.10, 1.11 and 2.0+
0.4.0
- Will now search for parameters in body for methods PUT and PATCH
- Method will default to request.method if '_method' parameter was not found
0.3.2
- Added end slash '/' at the end of HTML input in templatetags
0.3.0
- Removing '_method' from request parameters
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.