Ошибка: «элемент последовательности обновления словаря № 0 имеет длину 1; 2 требуется "на Django 1.4

У меня есть сообщение об ошибке на django 1.4:

элемент последовательности обновления словаря # 0 имеет длину 1; 2 требуется

[РЕДАКТИРОВАТЬ]

Это произошло, когда я попытался использовать шаблонный тег, например: `{% for 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, 

Я просто пытаюсь получить доступ к значению, которое я не понимаю в сообщении о последовательности обновления. Когда я использую курсор вместо hsetore queryset, функция работает. Ошибка также возникает при обработке шаблона, я только что перезапустил uwsgi и все работает хорошо, но ошибка возвращается позже

[редактировать]

У кого-то есть идея?

  • Как настроить python + uwsgi + nginx?
  • Легкая регистрация / отладка приложений с помощью nginx, uwsgi, flask?
  • uWSGI - Разный тайм-аут Харакири для администратора Django
  • Ошибка создания uwsgi с помощью pip в виртуальной среде
  • WSGI vs uWSGi с Nginx
  • кодек ascii не может декодировать ошибку при использовании pip для установки uwsgi
  • uwsgi + Flask + virtualenv ImportError: нет модуля с именем site
  • uwsgi: ваш серверный слуховой журнал отстает от 100 подключений
  • 10 Solutions collect form web for “Ошибка: «элемент последовательности обновления словаря № 0 имеет длину 1; 2 требуется "на Django 1.4”

    Просто столкнулся с этой проблемой. Я не знаю, было ли это то же самое, что и ваш код, но для меня основной причиной было то, что я забыл поместить name= в последний аргумент вызова функции url .

    Например, следующее порождает ошибку из вопроса:

     url(r'^foo/(?P<bar>[A-Za-z]+)/$', FooBar.as_view(), 'foo') 

    Но это действительно работает:

     url(r'^foo/(?P<bar>[A-Za-z]+)/$', FooBar.as_view(), name='foo') 

    Причина, по которой трассировка является бесполезной, заключается в том, что внутренне Django хочет проанализировать данный позиционный аргумент как аргумент ключевого слова kwargs , а так как строка является итерируемой, начинается атипичный путь кода. Всегда используйте name= на своих URL-адресах!

    Ошибка в вашем вопросе возникает, когда вы пытаетесь сделать что-то вроде следующего:

     >>> 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 

    Трудно сказать, где причина вашего кода, если вы не покажете свой код, полную трассировку.

    Вот воспроизводимая ошибка.

     >>> 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 >>> 

    Если вы дадите последовательность, а длина элемента – 1 и требуется два, мы получим такую ​​ошибку. См. Приведенный выше код. В первый раз я дал последовательность с кортежем, и это длина 1, затем мы получили ошибку, и словарь не обновляется. второй раз я дал внутри кортежа два элемента, словарь обновился.

    Я получил ту же проблему и обнаружил, что это связано с неправильными параметрами. В views.py я использовал:

     return render(request, 'demo.html',{'items', items}) 

    Но я нашел проблему: {'items', items} . Изменение на {'items': items} разрешило проблему.

    Добавьте name= в последний элемент определения URL.

    Вызывает ошибку url(r'^home$', 'common.views.view1', 'home'),

    Правильный url(r'^home$', 'common.views.view1', name='home'),

    Я столкнулся с вышеупомянутой проблемой, когда забыл передать имя аргумента ключевого слова функции url ().

    Код с ошибкой

      url(r"^testing/$", views.testing, "testing") 

    Код без ошибок

     url(r"^testing/$", views.testing, name="testing") 

    Поэтому, наконец, я удалил вышеуказанную ошибку таким образом. В вашем случае это может быть что-то другое. Поэтому проверьте url-шаблоны в urls.py.

    Вы неправильно отправляете один параметр; это должен быть dictionary object :

    • Неверно: func(a=r)

    • Правильно: func(a={'x':y})

    В моем случае my get_context_data в одном из моих представлений возвращал return render(self.request, 'es_connection_error.html', {'error':error}); в блоке try / catch вместо возврата context

    Я столкнулся с этой проблемой при попытке вызвать метод обновления с параметром неправильного типа. Ожидаемый дикт:

     {'foo': True} 

    Тот, который был принят, был:

     {'foo': "True"} 

    убедитесь, что вы проверяете все параметры, которые вы передаете, ожидаемого типа.

    Ошибка должна быть с параметрами. Проверьте, что параметры являются объектами словаря . Если это только список / кортеж аргументов, используйте только один * ( *params ) вместо двух * ( **params ). Это взорвет список / кортеж в правильное количество аргументов.

    Или, если параметры исходят из какой-либо другой части кода в виде файла JSON, выполните json.loads(params) , потому что объекты JSON иногда ведут себя как строка, поэтому вам нужно сделать это как JSON, используя нагрузку из строки ( нагрузки).

     super(HStoreDictionary, self).__init__(value, **params) 

    Надеюсь это поможет!

    Python - лучший язык программирования в мире.