Posts: 5
Threads: 1
Joined: Oct 2017
Oct-02-2017, 08:11 AM
(This post was last modified: Oct-02-2017, 08:11 AM by linurandy.)
Hello to everyone, i am new on python and django and i have a problem. I have a view that returns network asset.
In other views with similar data work but not in this not.
This is my code:
@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:
obj_activos_temp['data'].append({'0': "<img src=\" \# \" class= \" ui-icon ui-icon-circle-plus \" >", '1': temp.nombre, '2': temp.direccion_ip, '3': temp.tipos_dispositivos, '4': temp.sistema_operativo, '5': temp.valor_activo, '6': "no", '7': "no", 'extra': temp.id})
else:
obj_activos_temp['data'] = ""
return JsonResponse(obj_activos_temp) In the web page he said "KeyError at /activos/mostrar/
'data'"
Posts: 12,030
Threads: 485
Joined: Sep 2016
Perhaps the key is not 'data', Capitalization? or data_something_else?
Posts: 5
Threads: 1
Joined: Oct 2017
Posts: 12,030
Threads: 485
Joined: Sep 2016
do you need
obj_activos_temp['data'].append = "" ?
Posts: 5
Threads: 1
Joined: Oct 2017
why?? could you explain me?
Posts: 12,030
Threads: 485
Joined: Sep 2016
Sorry, it's early and I didn't look deeply enough at your code.
Is the error on line 11 or 13?
It would be helpful to see the error traceback verbatim
Posts: 5
Threads: 1
Joined: Oct 2017
This is the only error:
KeyError at /activos/mostrar/
'data'
Request Method: GET
Request URL: http://192.168.2.5/activos/mostrar/?draw=1&columns%5B0%5D%5Bdata%5D=0&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=false&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=1&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=2&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=3&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B4%5D%5Bdata%5D=4&columns%5B4%5D%5Bname%5D=&columns%5B4%5D%5Bsearchable%5D=true&columns%5B4%5D%5Borderable%5D=true&columns%5B4%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B4%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B5%5D%5Bdata%5D=5&columns%5B5%5D%5Bname%5D=&columns%5B5%5D%5Bsearchable%5D=true&columns%5B5%5D%5Borderable%5D=true&columns%5B5%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B5%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=1&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1506945121717
Django Version: 1.10.7
Python Executable: /usr/bin/python3
Python Version: 3.5.3
Python Path: ['/home/linursiem', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']
Server time: Lun, 2 Oct 2017 07:52:03 -0400
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sitetree',
'seguridad',
'activos']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
42. response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view
23. return view_func(request, *args, **kwargs)
File "/home/linursiem/activos/views.py" in activos_mostrar
27. obj_activos_temp['data'].append({'0': "<img src=\" \# \" class= \" ui-icon ui-icon-circle-plus \" >", '1': temp.nombre, '2': temp.direccion_ip, '3': temp.tipos_dispositivos, '4': temp.sistema_operativo, '5': temp.valor_activo, '6': "no", '7': "no", 'extra': temp.id})
Exception Type: KeyError at /activos/mostrar/
Exception Value: 'data'
Posts: 8,160
Threads: 160
Joined: Sep 2016
Oct-02-2017, 12:08 PM
(This post was last modified: Oct-02-2017, 12:16 PM by buran.)
well, on line 5 obj_activos_temp is empty dict, then on lines 6-8 you set the items for keys 'draw', 'recordsTotal', 'recordsFiltered'. You never set the item of key 'data' to be empty list in order to be able to append to it afterwards on line 11. Either set the item or use dict.setdefault method to set empty list along with the append.
Posts: 5
Threads: 1
Joined: Oct 2017
|