我在django 1.4上收到一条错误消息:
字典更新序列元素#0的长度为1;2个为必填项
[编辑]
当我尝试使用模板标签时发生了这种情况:`{%for v in values%}:
`{%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
当我尝试访问hstore queryset时,也会发生这种情况:
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
代码是:
tmp = Item.objects.where(HE("kv").contains({'key':value})) if tmp.count() > 0: item_id = tmp[0].id,
我只是在尝试获取价值。我不了解“更新顺序”消息。当我使用游标而不是hstore queryset时,该函数有效。错误也来自模板渲染。我刚刚重新启动uwsgi,一切正常,但稍后又返回了错误。
刚遇到这个问题。我不知道是不是碰到了你的代码,但是对我来说,根本原因是因为我忘记name=了url(或path在Django 2.0+中)函数调用的最后一个参数。
path
例如,以下函数引发问题中的错误:
url(r'^foo/(?P<bar>[A-Za-z]+)/$', views.FooBar.as_view(), 'foo') path('foo/{slug:bar}/', views.FooBar, 'foo')
但是这些实际上有效:
url(r'^foo/(?P<bar>[A-Za-z]+)/$', views.FooBar.as_view(), name='foo') path('foo/{slug:bar}/', views.FooBar, name='foo')
回溯之所以无济于事,是因为Django在内部希望将给定的位置参数解析为关键字 arguments kwargs,并且由于字符串是可迭代的,因此非典型代码路径开始展开。始终name=在你的网址上使用!