Не могу понять почему при тестировании метод POST возвращает мне 404 ошибку.
Есть такой класс
class CsvToDatabase(APIView):
permission_classes = (permissions.AllowAny,)
serializer_class = VendorsCsvSerializer
def post(self, request, format=None):
r_data = request.data
for data in r_data:
внутренняя логика
.....
serializer = VendorsCsvSerializer(data=data)
try:
serializer.is_valid(raise_exception=True)
serializer.save()
except ValidationError:
return Response({"errors": (serializer.errors,)},
status=status.HTTP_400_BAD_REQUEST)
else:
return Response(request.data, status=status.HTTP_200_OK)
И вот такой тест
class VendorCsvCreateTest(APITestCase):
def test_vendor_from_csv_create(self):
url = reverse('csv_vendor_create')
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
urls.py
urlpatterns = [
path('csv_upload/', FileUploadView.as_view(), name='csv_upload'),
path('from_csv_create/', CsvToDatabase.as_view(), name='csv_vendor_create'),
path('create/', VendorsCreateView.as_view(), name='vendor_create'),]
В классе CsvToDatabase у меня прописано два статуса: 200 в случае успешной загрузки и 400 в случае неудачи. Беру тот же json (data = мой json) который отрабатывает если посылать через Postman и получаю 404. Откуда берется этот статус ? С фронта все работает. Но вот если я вместо data передаю пустой список - то все ок - возвращает 200. Тоесть url получается рабочий.
Лог ошибки
FAIL: test_vendor_from_csv_create (vendors.tests.VendorCsvCreateTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/y700/projects/solution/apps/vendors/tests.py", line 108, in test_vendor_from_csv_create
self.assertEqual(response.status_code, status.HTTP_200_OK)
AssertionError: 404 != 200
По идее если бы data был не корректный я бы 400 получил но никак не 404.
p.s. Склоняюсь к мысли что дела в content_type. У меня data это список словарей data = [{}, {}] а в
response = self.client.post(url, data, format='json')
прописано format=json.
Как указать подходящий тип?