Как отладить ошибки HTTP 400 Bad Request в django?
У меня есть приложение с React frontend и Django backend. Я пытаюсь сделать POST запрос с моего react клиента, но получаю ошибку "Bad Request". Я проверил url запроса и он совпадает с api url. Поэтому я считаю, что ошибка связана с данными, которые я передаю. Как я могу отладить эту ошибку, чтобы узнать о ней больше?
Вот необходимые части кода:
models.py
class Product(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="products")
def __str__(self):
return self.name
class BatchChain(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
is_active = models.BooleanField()
class Batch(models.Model): # This is the model I'm trying to POST
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="batches_from_products")
chain = models.ForeignKey(BatchChain, on_delete=models.CASCADE)
serializers.py
class BatchPostSerializer(serializers.ModelSerializer):
class Meta:
model = Batch
fields = ["id", "product", "chain"]
views.py
class BatchListCreate(generics.ListCreateAPIView):
serializer_class = BatchPostSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
user = self.request.user
batches = Batch.objects.filter(product__owner=user)
return Batch.objects.filter(chain__in=batches.values_list("chain"))
def perform_create(self, serializer):
if serializer.is_valid() is False:
return Response({'Message': 'Serializer is not valid'}, status=status.HTTP_400_BAD_REQUEST)
if Batch.objects.filter(chain=self.request.data["chain"]).exists():
return Response({'Message': 'You can not create a second batch with same chain'}, status=status.HTTP_405_METHOD_NOT_ALLOWED)
serializer.save()
api/urls.py
...
path("batches/", views.BatchListCreate.as_view(), name="batch-list-create"), # all calls to /api/ are directed to this folder
...
frontend
api
.post("/api/batches/", { product: batchProduct, chain: chain })
.then((res) => {
if (res.status === 201) {
navigate("/chains")
}
else {
alert("Parti oluşturulamadı")
}
})
.catch((err) => {
alert(err)
})
.finally(() => {
setIsLoading(false)
})
Мой файл журнала регистрирует только этот вывод:
Bad Request: /api/batches/
"POST /api/batches/ HTTP/1.1" 400 127