Возникновение 500 внутренней ошибки сервера при POST-запросе API Django
Я сталкиваюсь с внутренней ошибкой сервера 500 при попытке отправить POST-запрос к API Django для создания объекта. Я проверил свой код, но не могу определить источник проблемы.
Вот код, который я использую: Serializer
class DeliverableSerializer(serializers.ModelSerializer):
class Meta:
model = Deliverable
fields = ("num", "project", "reviewer", "deliverable_type", "description", "due_date",
"id", "draft")
Виды
class DeliverableAPIView(APIView):
def post(self, request, format=None):
serializer = DeliverableSerializer(data=request.data)
if serializer.is_valid():
instance = serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def put(self, request, pk, format=None):
try:
deliverable = Deliverable.objects.get(pk=pk)
serializer = DeliverableSerializer(deliverable, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
return Response({"error": "An unexpected error occurred."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
URLs
path('api/deliverables/', DeliverableAPIView.as_view(), name='deliverable-list'), # For POST
path('api/deliverables/<int:pk>/', DeliverableAPIView.as_view(), name='deliverable-detail'), # For PUT
POST-запрос в моем скрипте
def post_data(endpoint, data):
"""Send data to the API via POST request."""
try:
response = requests.post(API_URL + endpoint, json=data, timeout=10)
response.raise_for_status() # Raises an HTTPError for bad responses
return response.json() # Return the JSON response if needed
except requests.exceptions.HTTPError as err:
raise Exception(f"HTTP error occurred while posting to {endpoint}: {err}") # For HTTP errors
except requests.exceptions.RequestException as err:
raise Exception(f"Error posting data to {endpoint}: {err}")
Когда я пытаюсь отправить POST-запрос на конечную точку /api/deliverables/, выдается ошибка 500. Я также пробовал использовать Postman, но не могу протестировать его должным образом из-за ограничений на localhost.
Я проверил, что данные запроса соответствуют полям сериализатора, и модель настроена правильно. Каковы могут быть причины этой 500-й ошибки и как я могу ее диагностировать?
Заранее благодарю за помощь.
Я попробовал отправить POST-запрос к своему Django API на конечную точку /api/deliverables/
с помощью скрипта и Postman. Я ожидал, что API примет данные в соответствии с моим запросом DeliverableSerializer
и создаст новый объект Deliverable в базе данных. Однако вместо успешного создания объекта я получил сообщение 500 Internal Server Error, указывающее на то, что на стороне сервера что-то пошло не так.
Вот структура данных, которые я отправляю в запросе:
{
"num": 1,
"project": 1, # ID of the project
"reviewer": 2, # ID of the reviewer
"deliverable_type": 3, # ID of the deliverable type
"description": "This is a test deliverable.",
"due_date": pd.to_datetime(row['Due Date'], errors='coerce').date().strftime('%Y-%m-%d')
"id": "folder_id_123",
"draft": true # Boolean value
}
Я также проверил данные запроса и убедился, что они соответствуют ожидаемым полям в сериализаторе, но ошибка сохраняется.