8

アプリに PATCH リクエストを送信したいのですが、Django でリクエストを使用する方法がわかりません。現在、次のエラーが発生しています。

AttributeError: 'WSGIRequest' object has no attribute 'PATCH'

HTMX ファイルの入力フィールドは次のようになります (CSRF トークンも送信するようにしました)。

<input 
        name="myfield"
        hx-patch="{% url 'my_update' myobj.id %}"
        hx-swap="none" />

これはDjangoビューです

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 はリクエストを受信して​​いますが、request.PATCH をどうすればよいかわかりません。HttpRequest.GET と HttpRequest.POST があるが HttpRequest.PATCH https://docs.djangoproject.com/en/3.2/ref/request-response/#httprequest-objectsがないことを Django ドキュメントで確認できます。PATCH を処理する最良の方法は何ですか?

4

2 に答える 2

5

request.bodyを介してアクセスし、使用して解析できるリクエストボディを手動で解析する必要があります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))
于 2021-12-10T11:15:11.837 に答える