在 Postman 中提交时,Django Rest Framework 不显示正确的错误

Django Rest Framework does not show the proper error when submitting in Postman

我有以下代码:

@api_view(['GET'])
def selected_device(request,pk=None):
    if pk != None:        
        try:
            devices = Device.objects.filter(pk=pk)
        except Device.DoesNotExist:
            return Response(status=status.HTTP_400_BAD_REQUEST)
        try:
            devicedetail = DeviceDetail.objects.filter(DD2DKEY=pk)
        except DeviceDetail.DoesNotExist:
            return Response(status=status.HTTP_400_BAD_REQUEST)        
        devserializer = DeviceSerializers(devices, many=True)
        devdserializer = DeviceDetailSerializers(devicedetail, many=True)        
        results = {
            "device":devserializer.data,
            "device_details" : devdserializer.data,       
        }
        return Response(results)

如代码中所述,有try和except来尝试获取数据。当我设置 pk=210 时,此数据不存在于 table 中。它不显示 400 的状态。相反,它在邮递员中显示 [],里面什么也没有。我怎样才能解决这个问题?

您可以使用 exists() 方法,

@api_view(['GET'])
def selected_device(request, pk=None):
    if not pk:
        return Response({"detail": "'pk' is empty"}, status=400)
    
    devices = Device.objects.filter(pk=pk)
    devicedetail = DeviceDetail.objects.filter(DD2DKEY=pk)
    if devices.exists() and devicedetail.exists():
        devserializer = DeviceSerializers(devices, many=True)
        devdserializer = DeviceDetailSerializers(devicedetail, many=True)
        results = {
            "device": devserializer.data,
            "device_details": devdserializer.data,
        }
        return Response(results)
    
    return Response(status=400)