Выполните пост-запрос, используя фреймворк для отдыха Django

У меня есть Django rest framework APIView:

class MyAPIView(views.APIView):
    def post(self, request):
        field = request.POST.get("field")
        print(field)
        return Response({"field": field}, status=200)

Я хочу вызывать его из отдельного процесса, используя Django API. Я делаю это следующим образом:

from django.http import HttpRequest, QueryDict

request = HttpRequest()
request.method = "POST"
request.POST = QueryDict(mutable=True)
request.POST["field"] = "5"
response = MyAPIView.as_view()(request=request)

Но когда в MyAPIView выводится field, то всегда None. Как вызвать метод post с помощью Django?

  1. Если вам нужно вызвать представление из другого представления - проверьте это answers

    .
  2. Если вам нужно послать запрос к представлению

pip install requests или poetry add requests

from rest_framework.reverse import reverse
import requests as client

DOMAIN = "http://127.0.0.1:8080"

# your endpoint name (path name in urls.py)
# you can get name using django extenstions command `show_urls` if you dont know the path name
endpoint = reverse("my-api-view")

client.post(f"{DOMAIN}{endpoint}", data={"field": "5"})

расширения django

команда show_urls

использование: python manage.py show_urls

  1. Если вам нужно точно выполнить код какого-то представления, почему вы не можете перенести этот код в какую-то функцию/статический метод и вызвать его в представлении и в другой части кода?
Вернуться на верх