У меня есть сообщение об ошибке на Django 1.4:
элемент последовательности обновления словаря # 0 имеет длину 1; 2 требуется
[РЕДАКТИРОВАТЬ]
Это произошло, когда я попытался использовать тег шаблона, например: `{% для v в значениях%}:
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:
[редактировать]
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
и все работает хорошо, но ошибка возвращается позже.
[редактировать]
У кого-нибудь есть идея?
values
иtmp
. Пока код отсутствует, -1 (возможно, временный) для этого вопроса.dict(['A',"b"])
пока это не такdict([('A',"b")])
Ответы:
Просто столкнулся с этой проблемой. Я не знаю, произошло ли то же самое в вашем коде, но для меня основная причина была в том, что я забыл поставить
name=
последний аргумент вызова функцииurl
(илиpath
в Django 2.0+).Например, следующие функции выдают ошибку из вопроса:
Но они на самом деле работают:
Причина, по которой обратная связь бесполезна, заключается в том, что внутри Django хочет проанализировать данный позиционный аргумент как аргумент ключевого слова
kwargs
, а поскольку строка является итеративной, нетипичный путь кода начинает раскрываться. Всегда используйтеname=
на своих URL!источник
Router.register
метод Django RestFramework. Это выглядит очень похоже, разница вname
kwarg ...path
URL-адрес в стиле Django 2.0 . Забыла использовать kwarg и было это:path('foo/', views.foo, 'foo')
. Я должен был измениться наpath('foo/', views.foo, name='foo')
Я получил эту ошибку, когда возился со строкой и словарем.
Итак, что вы действительно должны сделать, чтобы получить dict из строки:
Или в вопросах безопасности мы можем использовать literal_eval
источник
Ошибка в вашем вопросе возникает, когда вы пытаетесь что-то вроде следующего:
Трудно сказать, где причина в вашем коде, если вы не показываете свой код, полный возврат.
источник
Я столкнулся с вышеупомянутой проблемой, когда забыл передать имя аргумента ключевого слова в функцию url ().
Код с ошибкой
Код без ошибок
Итак, наконец, я удалил вышеуказанную ошибку таким способом. Это может быть что-то другое в вашем случае. Так проверить шаблоны URL в urls.py .
источник
Решение"
Передайте имя аргумента ключевого слова со значением в качестве имени вашего представления, например,
home
илиhome-view
т. Д. Дляurl()
работы.Выдает ошибку »
url(r'^home$', 'common.views.view1', 'home'),
Верный"
url(r'^home$', 'common.views.view1', name='home'),
источник
Вот воспроизведенная ошибка.
Если вы дадите последовательность и длина любого элемента будет равна 1, а потребуется два, то мы получим такую ошибку. Смотрите приведенный выше код. В первый раз я дал последовательность с кортежем и ее длиной 1, затем мы получили ошибку и словарь не обновляется. Во второй раз я дал внутри кортежа с двумя элементами, словарь обновился.
источник
Я получил ту же проблему и обнаружил, что это из-за неправильных параметров. В
views.py
я использовал:Но я нашел вопрос
{'items', items}
. Изменение{'items': items}
решило проблему.источник
В моем случае мой
get_context_data
в одном из моих просмотров возвращалсяreturn render(self.request, 'es_connection_error.html', {'error':error});
в блоке try / catch вместо возвратаcontext
источник
Ошибка должна быть с параметрами. Пожалуйста, убедитесь, что params является объектом словаря . Если это просто список / кортеж аргументов, используйте только один * (
*params
) вместо двух * (**params
). Это взорвет список / кортеж в нужное количество аргументов.Или, если параметры поступают из какой-то другой части кода в виде файла JSON, сделайте это
json.loads(params)
, потому что объекты JSON иногда ведут себя как строки, и поэтому вам нужно сделать это как JSON, используя load from string (load).Надеюсь это поможет!
источник
Я столкнулся с этой проблемой при попытке вызвать метод обновления с параметром неправильного типа. Ожидаемый дикт был:
Тот, который был передан был:
убедитесь, что вы проверяете все параметры, которые вы передаете, ожидаемого типа.
источник
Вы отправляете один параметр неправильно; это должно быть
dictionary object
:Неправильно:
func(a=r)
Верный:
func(a={'x':y})
источник
У меня тоже был подобный тип проблемы. Решение простое. просто не пытайтесь вводить значения NULL или None в значениях, или вам, возможно, придется использовать что-то вроде этого
dic.update([(key,value)])
источник