我有一个接受字典列表的类-data = [{}, {}]
。如果我通过Postman发送数据,除了测试POST类方法的问题之外,其他所有方法都可以正常工作。
错误是
FAIL: test_vendor_from_csv_create (vendors.tests.VendorCsvCreateTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/y700/projects/solution/apps/vendors/tests.py", line 128, in test_vendor_from_csv_create
self.assertEqual(response.status_code, status.HTTP_200_OK)
AssertionError: 404 != 200
views.py
class CsvToDatabase(APIView):
def post(self, request, format=None):
r_data = request.data
for data in r_data:
if data['nda'] == '':
data['nda'] = None
...
#some logic
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)
test.py
class VendorCsvCreateTest(APITestCase):
#API
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)
我认为问题是format='json'
。在这种情况下,如何以正确的格式传输数据?如果原因不同,请给我一个解决方案!
而且我根本不理解为什么status = 404
而不是400
是一个数据问题。如果我执行print(url)
,它将返回真实页面的URL。如果设置了data = []
空列表-status=200
返回。
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'),]