복붙노트

[PYTHON] 오류 : "사전 업데이트 시퀀스 요소 # 0의 길이는 1입니다. 2 필요합니다 "Django 1.4

PYTHON

오류 : "사전 업데이트 시퀀스 요소 # 0의 길이는 1입니다. 2 필요합니다 "Django 1.4

내가 장고 1.4 오류 메시지가 :

[편집하다]

`{% 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,

난 그냥 "업데이트 시퀀스"메시지를 이해하지 못하는 가치에 액세스하려고합니다. hstore queryset 대신 커서를 사용하면 함수가 작동합니다. 템플릿 렌더링도 오류가 발생했습니다. uwsgi를 다시 시작하면 모든 것이 잘 작동하지만 나중에 오류가 다시 발생합니다.

[편집하다]

누군가 아이디어가 있습니까?

해결법

  1. ==============================

    1.그냥이 문제를 만났습니다. 나는 당신의 코드를 쳤던 것과 같은 일인지는 모르지만, 근본 원인은 url 함수 호출의 마지막 인자에 name =을 넣는 것을 잊었 기 때문이다.

    그냥이 문제를 만났습니다. 나는 당신의 코드를 쳤던 것과 같은 일인지는 모르지만, 근본 원인은 url 함수 호출의 마지막 인자에 name =을 넣는 것을 잊었 기 때문이다.

    예를 들어, 다음과 같은 질문에서 오류가 throw됩니다.

    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에 사용하십시오!

  2. ==============================

    2.다음과 같은 것을 시도 할 때 질문에 오류가 발생합니다.

    다음과 같은 것을 시도 할 때 질문에 오류가 발생합니다.

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

    코드를 표시하고 전체 추적을 표시하지 않으면 코드에서 원인을 파악하는 것이 어렵습니다.

  3. ==============================

    3.url () 함수에 키워드 인수 이름을 전달하는 것을 잊었을 때 위에서 언급 한 문제에 직면했습니다.

    url () 함수에 키워드 인수 이름을 전달하는 것을 잊었을 때 위에서 언급 한 문제에 직면했습니다.

    오류가있는 코드

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

    코드 오류없이

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

    그래서 마침내 위의 오류를 이런 식으로 제거했습니다. 그것은 당신의 경우에 뭔가 다를 수 있습니다. urls.py에서 URL 패턴을 확인하십시오.

  4. ==============================

    4.여기에 재현 된 오류가 있습니다.

    여기에 재현 된 오류가 있습니다.

    >>> 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이고 2를 필요로하면이 종류의 오류가 발생합니다. 위의 코드를 참조하십시오. 처음에 튜플로 시퀀스를주고 길이가 1이면 오류가 발생하고 사전은 업데이트되지 않습니다. 두 번째 요소가있는 내부 튜플을 두 번째로 추가하면 사전이 업데이트됩니다.

  5. ==============================

    5.나는 문자열과 사전으로 어지럼증 할 때이 오류가 발생했습니다.

    나는 문자열과 사전으로 어지럼증 할 때이 오류가 발생했습니다.

    dict1 = {'taras': 'vaskiv', 'iruna': 'vaskiv'}
    str1 = str(dict1)
    dict(str1)
    *** ValueError: dictionary update sequence element #0 has length 1; 2 is required
    

    문자열에서 dict을 얻기 위해 실제로해야 할 일은 다음과 같습니다.

    dic2 = eval(str1)
    dic2
    {'taras': 'vaskiv', 'iruna': 'vaskiv'}
    
  6. ==============================

    6.url () 함수에 값이있는 키워드 인수 이름을보기 이름 (예 : 집 또는 집보기 등)으로 전달합니다.

    url () 함수에 값이있는 키워드 인수 이름을보기 이름 (예 : 집 또는 집보기 등)으로 전달합니다.

    url (r '^ home $', 'common.views.view1', 'home'),

    url (r '^ home $', 'common.views.view1', name = 'home'),

  7. ==============================

    7.나는 같은 문제를 가지고 그것이 잘못된 매개 변수로 인한 것으로 나타났습니다. views.py에서는 다음을 사용했습니다.

    나는 같은 문제를 가지고 그것이 잘못된 매개 변수로 인한 것으로 나타났습니다. views.py에서는 다음을 사용했습니다.

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

    하지만 문제가 발견되었습니다 : { 'items', items}. { 'items': items} (으)로 변경하면 문제가 해결되었습니다.

  8. ==============================

    8.내 경우, 내 뷰 중 하나에서 내 get_context_data 반환 반환했습니다 (self.request, 'es_connection_error.html', { '오류': 오류}); 컨텍스트를 반환하는 대신 try / catch 블록에서

    내 경우, 내 뷰 중 하나에서 내 get_context_data 반환 반환했습니다 (self.request, 'es_connection_error.html', { '오류': 오류}); 컨텍스트를 반환하는 대신 try / catch 블록에서

  9. ==============================

    9.오류는 매개 변수와 함께 있어야합니다. params가 사전 객체인지 확인하십시오. 인수의 목록 / 튜플 인 경우 두 개의 * (** 매개 변수) 대신 * (* params) 하나만 사용하십시오. 이렇게하면 목록 / 튜플이 적절한 양의 인수로 분해됩니다.

    오류는 매개 변수와 함께 있어야합니다. params가 사전 객체인지 확인하십시오. 인수의 목록 / 튜플 인 경우 두 개의 * (** 매개 변수) 대신 * (* params) 하나만 사용하십시오. 이렇게하면 목록 / 튜플이 적절한 양의 인수로 분해됩니다.

    또는 params가 JSON 파일로 코드의 다른 부분에서 오는 경우 json.loads (params)를 수행하십시오. JSON 객체가 문자열로 동작하는 경우가 있으므로 JSON으로 문자열에서로드를 사용해야합니다 ( 잔뜩).

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

    희망이 도움이!

  10. ==============================

    10.하나의 매개 변수를 잘못 보내고 있습니다. 사전 개체 여야합니다.

    하나의 매개 변수를 잘못 보내고 있습니다. 사전 개체 여야합니다.

  11. ==============================

    11.잘못된 유형의 매개 변수로 업데이트 메소드를 호출하려고 할 때이 문제가 발생했습니다. 예상 된 dict은 다음과 같습니다.

    잘못된 유형의 매개 변수로 업데이트 메소드를 호출하려고 할 때이 문제가 발생했습니다. 예상 된 dict은 다음과 같습니다.

    {'foo': True}
    

    통과 된 사람은 다음과 같습니다.

    {'foo': "True"}
    

    전달할 모든 매개 변수가 예상되는 유형인지 확인하십시오.

  12. from https://stackoverflow.com/questions/17610732/error-dictionary-update-sequence-element-0-has-length-1-2-is-required-on-dj by cc-by-sa and MIT license