错误:“字典更新序列元素#0的长度为1;在Django 1.4上需要2

我在django 1.4上收到一条错误消息:

字典更新序列元素#0的长度为1;2个为必填项

[编辑]

当我尝试使用模板标签时发生了这种情况:`{%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+中)函数调用的最后一个参数。

例如,以下函数引发问题中的错误:

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=在你的网址上使用!

以上是 错误:“字典更新序列元素#0的长度为1;在Django 1.4上需要2 的全部内容, 来源链接: utcz.com/qa/426743.html

回到顶部