I would like to send a PATCH request to my app but I'm not sure how to consume the request in Django. I am currently getting the following error.
AttributeError: 'WSGIRequest' object has no attribute 'PATCH'
The input field in the HTMX file looks like this (I also made sure to send the CSRF token):
<input
name="myfield"
hx-patch="{% url 'my_update' myobj.id %}"
hx-swap="none" />
This is the Django View
class MyHtmxView(View):
def patch(self, request, *args, **kwargs):
form = MyForm(request.PATCH)
if form.is_valid():
form.save()
# return an okay status? 200?
else:
return HttpResponse(self.form_invalid(form))
Django is receiving the request, but isn't sure what to do with request.PATCH. I can see in the Django docs that there is a HttpRequest.GET and HttpRequest.POST but no HttpRequest.PATCH https://docs.djangoproject.com/en/3.2/ref/request-response/#httprequest-objects. What's the best way to handle the PATCH?
You need to parse the request body manually which can be accessed via request.body and parse using QueryDict(request.body)
from django.http.request import QueryDict
class MyHtmxView(View):
def patch(self, request, *args, **kwargs):
# parse request body mannualy
data = QueryDict(request.body)
form = MyForm(data)
if form.is_valid():
form.save()
# return an okay status? 200?
else:
return HttpResponse(self.form_invalid(form))