python - deploy - uwsgi emperor
Error: "elemento de secuencia de actualización del diccionario#0 tiene longitud 1; 2 es obligatorio "en Django 1.4 (11)
Tengo un mensaje de error en django 1.4:
el elemento de secuencia de actualización del diccionario # 0 tiene longitud 1; 2 es requerido
[EDITAR]
Sucedió cuando lo intenté al usar una etiqueta de plantilla como: `{% para v en valores%}:
dictionary update sequence element #0 has length 1; 2 is required
Request Method: GET
Request URL: ...
Django Version: 1.4.5
Exception Type: ValueError
Exception Value:
dictionary update sequence element #0 has length 1; 2 is required
Exception Location: /usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py in __init__, line 21
Python Executable: /usr/bin/uwsgi-core
Python Version: 2.7.3
Python Path:
[''/var/www/'',
''.'',
'''',
''/usr/lib/python2.7'',
''/usr/lib/python2.7/plat-linux2'',
''/usr/lib/python2.7/lib-tk'',
''/usr/lib/python2.7/lib-old'',
''/usr/lib/python2.7/lib-dynload'',
''/usr/local/lib/python2.7/dist-packages'',
''/usr/lib/python2.7/dist-packages'',
''/usr/lib/python2.7/dist-packages/PIL'',
''/usr/lib/pymodules/python2.7'']
Server time: sam, 13 Jul 2013 16:15:45 +0200
Error during template rendering
In template /var/www/templates/app/index.html, error at line 172
dictionary update sequence element #0 has length 1; 2 is required
172 {% for product in products %}
Traceback Switch to copy-and-paste view
/usr/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response
response = callback(request, *callback_args, **callback_kwargs)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/contrib/auth/decorators.py in _wrapped_view
return view_func(request, *args, **kwargs)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/views/decorators/http.py in inner
return func(request, *args, **kwargs)
...
▶ Local vars
./app/views.py in index
context_instance=RequestContext(request))
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/shortcuts/__init__.py in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/loader.py in render_to_string
return t.render(context_instance)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in render
return self._render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in _render
return self.nodelist.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in render
bit = self.render_node(node, context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/debug.py in render_node
return node.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/loader_tags.py in render
return compiled_parent._render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in _render
return self.nodelist.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in render
bit = self.render_node(node, context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/debug.py in render_node
return node.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/loader_tags.py in render
result = block.nodelist.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/base.py in render
bit = self.render_node(node, context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/debug.py in render_node
return node.render(context)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/template/defaulttags.py in render
len_values = len(values)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/core/paginator.py in __len__
return len(self.object_list)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/db/models/query.py in __len__
self._result_cache = list(self.iterator())
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/db/models/query.py in iterator
obj = model(*row[index_start:aggregate_start])
...
▶ Local vars
/usr/lib/python2.7/dist-packages/django/db/models/base.py in __init__
setattr(self, field.attname, val)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py in __set__
value = self.field._attribute_class(value, self.field, obj)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py in __init__
super(HStoreDictionary, self).__init__(value, **params)
...
▶ Local vars
Sucede también cuando intento acceder a un conjunto de consultas de hstore:
[editar]
Traceback (most recent call last):
File "manage.py", line 14, in <module>
execute_manager(settings)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 459, in execute_manager
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/home/name/workspace/project/app/data/commands/my_command.py", line 60, in handle
item_id = tmp[0].id,
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 207, in __getitem__
return list(qs)[0]
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 87, in __len__
self._result_cache.extend(self._iter)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 301, in iterator
obj = model(*row[index_start:aggregate_start])
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 300, in __init__
setattr(self, field.attname, val)
File "/usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py", line 38, in __set__
value = self.field._attribute_class(value, self.field, obj)
File "/usr/local/lib/python2.7/dist-packages/djorm_hstore/fields.py", line 21, in __init__
super(HStoreDictionary, self).__init__(value, **params)
ValueError: dictionary update sequence element #0 has length 1; 2 is required
el código es:
tmp = Item.objects.where(HE("kv").contains({''key'':value}))
if tmp.count() > 0:
item_id = tmp[0].id,
Solo trato de acceder al valor No entiendo el mensaje de "secuencia de actualización". Cuando uso un cursor en lugar del queryset de hstore, la función funciona. El error viene en la representación de la plantilla también, acabo de reiniciar uwsgi
y todo funciona bien, pero el error vuelve más tarde
[editar]
¿Alguien tiene una idea?
Acabo de toparme con este problema. No sé si es lo mismo que tocó tu código, pero para mí la causa principal fue porque olvidé poner name=
en el último argumento de la llamada a la función url
.
Por ejemplo, lo siguiente arroja el error de la pregunta:
url(r''^foo/(?P<bar>[A-Za-z]+)/$'', FooBar.as_view(), ''foo'')
Pero esto realmente funciona:
url(r''^foo/(?P<bar>[A-Za-z]+)/$'', FooBar.as_view(), name=''foo'')
La razón por la que el rastreo no es útil es porque internamente, Django quiere analizar el argumento posicional dado como el argumento de palabra clave kwargs
, y como una cadena es iterable, comienza a desplegarse una ruta de código atípica. ¡Siempre use name=
en sus urls!
Agregue name=
al último elemento de la definición de url.
Lanza Error url(r''^home$'', ''common.views.view1'', ''home''),
Corregir url(r''^home$'', ''common.views.view1'', name=''home''),
Aquí está el error reproducido.
>>> d = {}
>>> d.update([(1,)])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 1; 2 is required
>>>
>>> d
{}
>>>
>>> d.update([(1, 2)])
>>> d
{1: 2}
>>>
>>> d.update(''hello_some_string'')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 1; 2 is required
>>>
Si le da la secuencia y cualquier longitud de elemento es 1 y requiere dos, obtendremos este tipo de error. Vea el código anterior. La primera vez que di la secuencia con tupla y su longitud 1, obtuvimos el error y el diccionario no se actualiza. segunda vez que di tupla adentro con dos elementos, el diccionario se actualizó.
El error debería ser con los params. Verifique que el parámetro es un objeto de diccionario . Si solo es una lista / tupla de argumentos, use solo un * ( *params
) en lugar de dos * ( **params
). Esto explotará la lista / tupla en la cantidad adecuada de argumentos.
O bien, si los parámetros provienen de alguna otra parte del código como un archivo JSON, haga json.loads(params)
, porque los objetos JSON a veces se comportan como cadenas y, por lo tanto, debe hacerlo como JSON utilizando load from string ( cargas).
super(HStoreDictionary, self).__init__(value, **params)
¡Espero que esto ayude!
En mi caso, mi get_context_data
en una de mis vistas devolvía return render(self.request, ''es_connection_error.html'', {''error'':error});
en un bloque try / catch en lugar de devolver el context
Encontré este problema al intentar invocar el método de actualización con un parámetro de un tipo incorrecto. El dict esperado era:
{''foo'': True}
El que se aprobó fue:
{''foo'': "True"}
asegúrese de verificar que todos los parámetros que pasa sean del tipo esperado.
Está enviando un parámetro incorrectamente; debería ser un dictionary object
:
Incorrecto:
func(a=r)
Correcto:
func(a={''x'':y})
Me enfrenté al problema mencionado anteriormente cuando olvidé pasar un nombre de argumento de palabra clave a la función url ().
Código con error
url(r"^testing/$", views.testing, "testing")
Código sin error
url(r"^testing/$", views.testing, name="testing")
Así que finalmente eliminé el error anterior de esta manera. Puede ser algo diferente en tu caso. Así que revisa tus patrones de URL en urls.py.
Obtuve el mismo problema y descubrí que se debía a parámetros incorrectos. En views.py
, utilicé:
return render(request, ''demo.html'',{''items'', items})
Pero encontré el problema: {''items'', items}
. El cambio a {''items'': items}
resolvió el problema.
Obtuve este error cuando estaba jugando con cadena y diccionario.
dict1 = {''taras'': ''vaskiv'', ''iruna'': ''vaskiv''}
str1 = str(dict1)
dict(str1)
*** ValueError: dictionary update sequence element #0 has length 1; 2 is required
Entonces, lo que tienes que hacer para obtener dict de string es:
dic2 = eval(str1)
dic2
{''taras'': ''vaskiv'', ''iruna'': ''vaskiv''}
Se genera un error en su pregunta cuando prueba algo como lo siguiente:
>>> a_dictionary = {}
>>> a_dictionary.update([[1]])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 1; 2 is required
Es difícil decir dónde está la causa en su código a menos que muestre su código, rastreo completo.