У меня есть представление Django, которое возвращает список объектов или позволяет вам создать его, если вы POST ...
@csrf_exempt
def quantities(request):
if request.method == "POST":
kwargs = {**request.POST}
print(request.POST)
quantity = Quantity.objects.create(**kwargs)
return JsonResponse({"quantity": f"/quantities/{quantity.id}/"})
return JsonResponse([], safe=False)
Если он получает запрос GET, он возвращает список величин (кодне показан), который работает нормально, и если он получает запрос POST, он использует данные POST для создания нового количества.(Я знаю, что DRF делает все это для вас, но для моего первого API я хотел попробовать сделать это вручную - вы просто лучше это понимаете.)
В любом случае в моем тесте я использую запросы для проверкиэто работает ...
response = requests.post(
self.live_server_url + f"/quantities/", data={
"name": "Height", "units": "m", "description": "Human Height"
}
)
Это не работает - он не передает никаких данных.Это print
утверждение в представлении выше просто печатает <QueryDict: {}>
.По какой-то причине данные POST, которые я вставил в запрос, ушли из запроса к тому времени, когда он прошел через все промежуточное программное обеспечение и добрался до представления.
Единственное, о чем я могу думать, это то, что @csrf_exempt
Декоратор удаляет данные POST, хотя я не могу себе представить, почему.Я посмотрел на его исходный код, и, похоже, он этого не делает, но я не могу проверить, потому что удаление декоратора означает, что представление просто возвращает ответ 403.
Куда идут мои данные POST