J'ai un message d'erreur sur django 1.4:
l'élément de séquence de mise à jour du dictionnaire # 0 a la longueur 1; 2 est requis
[ÉDITER]
Cela s'est produit lorsque j'ai essayé d'utiliser une balise de modèle comme: `{% for v in values%}:
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
Cela se produit aussi lorsque j'essaye d'accéder à un jeu de requêtes hstore:
[Éditer]
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
le code est:
tmp = Item.objects.where(HE("kv").contains({'key':value}))
if tmp.count() > 0:
item_id = tmp[0].id,
J'essaye juste d'accéder à la valeur. Je ne comprends pas le message "séquence de mise à jour". Lorsque j'utilise un curseur au lieu de hstore queryset, la fonction fonctionne. L'erreur vient également du rendu du modèle. Je viens de redémarrer uwsgi
et tout fonctionne bien, mais l'erreur revient plus tard.
[Éditer]
Quelqu'un a-t-il une idée?
values
ettmp
. Bien que le code soit manquant, -1 (éventuellement temporaire) pour cette question.dict(['A',"b"])
alors que ce n'est pas le casdict([('A',"b")])
Réponses:
Je viens de rencontrer ce problème. Je ne sais pas si c'est la même chose qui a frappé votre code, mais pour moi, la cause principale était parce que j'ai oublié de mettre
name=
le dernier argument de l' appel de fonctionurl
(oupath
dans Django 2.0+).Par exemple, les fonctions suivantes génèrent l'erreur de la question:
Mais ceux-ci fonctionnent réellement:
La raison pour laquelle le retraçage est inutile parce que l' interne, Django veut analyser la donnée de position argument comme mot - clé l' argument
kwargs
, et comme une chaîne est un itératives, un chemin de code atypique commence à se dérouler. Utilisez toujoursname=
sur vos URL!la source
Router.register
méthode de Django RestFramework. Il semble très similaire, la différence est lename
kwarg ...path
URL de style Django 2.0 . Vous avez oublié d'utiliser le kwarg et avait ceci:path('foo/', views.foo, 'foo')
. Je devais changer pourpath('foo/', views.foo, name='foo')
J'ai eu cette erreur lorsque je jouais avec une chaîne et un dictionnaire.
Donc, ce que vous devez faire pour obtenir un dict à partir d'une chaîne est:
Ou en matière de sécurité, nous pouvons utiliser literal_eval
la source
Une erreur dans votre question est générée lorsque vous essayez quelque chose comme ceci:
Il est difficile de dire où est la cause dans votre code à moins d'afficher votre code, suivi complet.
la source
J'ai rencontré le problème mentionné ci-dessus lorsque j'ai oublié de passer un nom d' argument de mot-clé à la fonction url ().
Code avec erreur
Code sans erreur
Donc, finalement, j'ai supprimé l'erreur ci-dessus de cette manière. Cela pourrait être quelque chose de différent dans votre cas. Vérifiez donc vos modèles d'URL dans urls.py .
la source
Solution"
Passez un nom d' argument mot-clé avec une valeur comme nom de votre vue, par exemple
home
ouhome-view
etc. à laurl()
fonction.Génère une erreur »
url(r'^home$', 'common.views.view1', 'home'),
Correct"
url(r'^home$', 'common.views.view1', name='home'),
la source
Voici l'erreur reproduite.
Si vous donnez la séquence et que toute longueur d'élément est de 1 et qu'il en faut deux, nous obtiendrons ce genre d'erreur. Voir le code ci-dessus. La première fois que j'ai donné la séquence avec tuple et sa longueur 1, nous avons eu l'erreur et le dictionnaire n'est pas mis à jour. la deuxième fois que j'ai donné un tuple intérieur avec deux éléments, le dictionnaire a été mis à jour.
la source
J'ai eu le même problème et j'ai trouvé que c'était dû à de mauvais paramètres. En
views.py
, j'ai utilisé:Mais je trouve la question:
{'items', items}
. Changer pour{'items': items}
résoudre le problème.la source
Dans mon cas, mon
get_context_data
dans l'une de mes vues retournaitreturn render(self.request, 'es_connection_error.html', {'error':error});
dans un bloc try / catch au lieu de revenircontext
la source
L'erreur doit être avec les paramètres. Veuillez vérifier que les paramètres sont un objet dictionnaire . S'il ne s'agit que d'une liste / d'un tuple d'arguments, utilisez un seul * (
*params
) au lieu de deux * (**params
). Cela explose la liste / le tuple en la quantité appropriée d'arguments.Ou, si les paramètres proviennent d'une autre partie du code en tant que fichier JSON, veuillez le faire
json.loads(params)
, car les objets JSON se comportent parfois comme une chaîne et vous devez donc en faire un JSON en utilisant load from string (charges).J'espère que cela t'aides!
la source
J'ai rencontré ce problème en essayant d'appeler la méthode de mise à jour avec un paramètre d'un type incorrect. Le dict attendu était:
Celui qui a été adopté était:
assurez-vous de vérifier que tous les paramètres que vous passez sont du type attendu.
la source
Vous envoyez un paramètre de manière incorrecte; ce devrait être un
dictionary object
:Faux:
func(a=r)
Correct:
func(a={'x':y})
la source
J'ai aussi eu un type de problème similaire. La solution est simple. N'essayez simplement pas d'entrer la valeur NULL ou None dans les valeurs ou vous devrez peut-être utiliser quelque chose comme ça
dic.update([(key,value)])
la source