Datatable with jquery

0

Good first of all, I'm trying to fill a table with jquery and Datatable. I've already read several tutorials and nothing, I do not fill the table. Below I will put my codes:

server-side code with django

@login_required
def activos_mostrar(request):
if request.method == 'GET':
    obj_activos = Activos.objects.values('id', 'nombre', 'direccion_ip', 'tipos_dispositivos', 'sistema_operativo', 'valor_activo')
    obj_activos_temp = {}
    obj_activos_temp['draw'] = request.GET['draw']
    obj_activos_temp['recordsTotal'] = len(obj_activos)
    obj_activos_temp['recordsFiltered'] = len(obj_activos)
    if len(obj_activos) != 0:
        for temp in obj_activos:
            if 'data' in obj_activos_temp:
                obj_activos_temp['data'].append({'icon': "<img src=\" \# \" class= \" ui-icon ui-icon-circle-plus \" >", 'nombre': temp['nombre'],  'direccion_ip': temp['direccion_ip'], 'tipos_dispositivos': temp['tipos_dispositivos'], 'sistemas_operativo': temp['sistema_operativo'], 'valor_activo': temp['valor_activo'], 'vuln_planif': "no", 'disp_planif': "no", 'extra': temp['id']})
            else:
                obj_activos_temp.setdefault('data', {'icon': "<img src=\" \# \" class= \" ui-icon ui-icon-circle-plus \" >", 'nombre': temp['nombre'],  'direccion_ip': temp['direccion_ip'], 'tipos_dispositivos': temp['tipos_dispositivos'], 'sistemas_operativo': temp['sistema_operativo'], 'valor_activo': temp['valor_activo'], 'vuln_planif': "no", 'disp_planif': "no", 'extra': temp['id']})
    else:
        obj_activos_temp['data'] = ""
    return JsonResponse(obj_activos_temp)

template code:

var table = $("#table_activos").dataTable({
                    "processing": true,
                    "serverSide": true,
                    "pagingType": "full_numbers",
                    "ajax": "activos/mostrar/",
                    "columns": [
                        { "data": "icon" },
                        { "data": "nombre" },
                        { "data": "direccion_ip" },
                        { "data": "tipos_dispositivos" },
                        { "data": "sistema_operativo" },
                        { "data": "valor_activo" },
                        { "data": "vuln_planif" },
                        { "data": "disp_planif" }
                    ],
                    "language": {
                        "zeroRecords": "No hay activos disponibles"
                    }
         });
<link type="text/css" href="{{ STATIC_PREFIX }}css/jquery-ui.min.css" rel="stylesheet" />
        <link type="text/css" href="{{ STATIC_PREFIX }}datatables/DataTables-1.10.16/css/jquery.dataTables.min.css" rel="stylesheet" />
        <link type="text/css" href="{{ STATIC_PREFIX }}datatables/DataTables-1.10.16/css/dataTables.jqueryui.min.css" rel="stylesheet" />

        <script type="text/javascript" charset="utf-8" src="{{ STATIC_PREFIX }}js/jquery-1.11.3.min.js" ></script>
        <script type="text/javascript" src="{{ STATIC_PREFIX }}js/jquery-ui.min.js"></script>
        <script type="text/javascript" src="{{ STATIC_PREFIX }}datatables/DataTables-1.10.16/js/jquery.dataTables.min.js"></script>
        <script type="text/javascript" src="{{ STATIC_PREFIX }}datatables/DataTables-1.10.16/js/dataTables.jqueryui.min.js"></script>

    

   <table id="table_activos">
                        <thead>
                            <tr>
                                <th></th>
                                <th>NOMBRE EQUIPO</th>
                                <th>IP</th>
                                <th>TIPO DE DISPOSITIVO</th>
                                <th>SISTEMA OPERATIVO</th>
                                <th>VALOR ACTIVO</th>
                                <th>VULN PLANIFICADO</th>
                                <th>DISPONIBILIDAD CONFIG</th>
                            </tr>
                        </thead>
                    </table>

This is my json response

recordsFiltered: 1
recordsTotal: 1
recordsFiltered 1
data: Object
    tipos_dispositivos: 1
    nombre: er
    vuln_planif: no
    valor_activo: 2
    sistema_operativo: 1
    direccion_ip: 1.1.1.1
    disp_planif: no
    icon: <img src=" \# " class= " ui-icon ui-icon-circle-plus " >
    DT_RowData: Object
        pkey: 1
    DT_RowId: 1
draw: 1
    
asked by linurandy 03.10.2017 в 08:37
source

1 answer

0

The answer was simple instead of my python code using the function setdefault I just had to do:

@login_required
def activos_mostrar(request):
if request.method == 'GET':
    obj_activos = Activos.objects.values('id', 'nombre', 'direccion_ip', 'tipos_dispositivos', 'sistema_operativo', 'valor_activo')
    obj_activos_temp = {}
    obj_activos_temp['draw'] = request.GET['draw']
    obj_activos_temp['recordsTotal'] = len(obj_activos)
    obj_activos_temp['recordsFiltered'] = len(obj_activos)
    if len(obj_activos) != 0:
        for temp in obj_activos:
            if 'data' in obj_activos_temp:
                obj_activos_temp['data'].append({'icon': "<img src=\" \# \" class= \" ui-icon ui-icon-circle-plus \" >", 'nombre': temp['nombre'],  'direccion_ip': temp['direccion_ip'], 'tipos_dispositivos': temp['tipos_dispositivos'], 'sistemas_operativo': temp['sistema_operativo'], 'valor_activo': temp['valor_activo'], 'vuln_planif': "no", 'disp_planif': "no", 'extra': temp['id']})
            else:
                obj_activos_temp['data'] = [{'icon': "<img src=\" \# \" class= \" ui-icon ui-icon-circle-plus \" >", 'nombre': temp['nombre'],  'direccion_ip': temp['direccion_ip'], 'tipos_dispositivos': temp['tipos_dispositivos'], 'sistemas_operativo': temp['sistema_operativo'], 'valor_activo': temp['valor_activo'], 'vuln_planif': "no", 'disp_planif': "no", 'extra': temp['id']}]
else:
    obj_activos_temp['data'] = ""
return JsonResponse(obj_activos_temp)
    
answered by 06.10.2017 / 05:17
source