[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.그냥이 문제를 만났습니다. 나는 당신의 코드를 쳤던 것과 같은 일인지는 모르지만, 근본 원인은 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.다음과 같은 것을 시도 할 때 질문에 오류가 발생합니다.
다음과 같은 것을 시도 할 때 질문에 오류가 발생합니다.
>>> 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.url () 함수에 키워드 인수 이름을 전달하는 것을 잊었을 때 위에서 언급 한 문제에 직면했습니다.
url () 함수에 키워드 인수 이름을 전달하는 것을 잊었을 때 위에서 언급 한 문제에 직면했습니다.
오류가있는 코드
url(r"^testing/$", views.testing, "testing")
코드 오류없이
url(r"^testing/$", views.testing, name="testing")
그래서 마침내 위의 오류를 이런 식으로 제거했습니다. 그것은 당신의 경우에 뭔가 다를 수 있습니다. urls.py에서 URL 패턴을 확인하십시오.
-
==============================
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.나는 문자열과 사전으로 어지럼증 할 때이 오류가 발생했습니다.
나는 문자열과 사전으로 어지럼증 할 때이 오류가 발생했습니다.
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.url () 함수에 값이있는 키워드 인수 이름을보기 이름 (예 : 집 또는 집보기 등)으로 전달합니다.
url () 함수에 값이있는 키워드 인수 이름을보기 이름 (예 : 집 또는 집보기 등)으로 전달합니다.
url (r '^ home $', 'common.views.view1', 'home'),
url (r '^ home $', 'common.views.view1', name = 'home'),
-
==============================
7.나는 같은 문제를 가지고 그것이 잘못된 매개 변수로 인한 것으로 나타났습니다. views.py에서는 다음을 사용했습니다.
나는 같은 문제를 가지고 그것이 잘못된 매개 변수로 인한 것으로 나타났습니다. views.py에서는 다음을 사용했습니다.
return render(request, 'demo.html',{'items', items})
하지만 문제가 발견되었습니다 : { 'items', items}. { 'items': items} (으)로 변경하면 문제가 해결되었습니다.
-
==============================
8.내 경우, 내 뷰 중 하나에서 내 get_context_data 반환 반환했습니다 (self.request, 'es_connection_error.html', { '오류': 오류}); 컨텍스트를 반환하는 대신 try / catch 블록에서
내 경우, 내 뷰 중 하나에서 내 get_context_data 반환 반환했습니다 (self.request, 'es_connection_error.html', { '오류': 오류}); 컨텍스트를 반환하는 대신 try / catch 블록에서
-
==============================
9.오류는 매개 변수와 함께 있어야합니다. params가 사전 객체인지 확인하십시오. 인수의 목록 / 튜플 인 경우 두 개의 * (** 매개 변수) 대신 * (* params) 하나만 사용하십시오. 이렇게하면 목록 / 튜플이 적절한 양의 인수로 분해됩니다.
오류는 매개 변수와 함께 있어야합니다. params가 사전 객체인지 확인하십시오. 인수의 목록 / 튜플 인 경우 두 개의 * (** 매개 변수) 대신 * (* params) 하나만 사용하십시오. 이렇게하면 목록 / 튜플이 적절한 양의 인수로 분해됩니다.
또는 params가 JSON 파일로 코드의 다른 부분에서 오는 경우 json.loads (params)를 수행하십시오. JSON 객체가 문자열로 동작하는 경우가 있으므로 JSON으로 문자열에서로드를 사용해야합니다 ( 잔뜩).
super(HStoreDictionary, self).__init__(value, **params)
희망이 도움이!
-
==============================
10.하나의 매개 변수를 잘못 보내고 있습니다. 사전 개체 여야합니다.
하나의 매개 변수를 잘못 보내고 있습니다. 사전 개체 여야합니다.
-
==============================
11.잘못된 유형의 매개 변수로 업데이트 메소드를 호출하려고 할 때이 문제가 발생했습니다. 예상 된 dict은 다음과 같습니다.
잘못된 유형의 매개 변수로 업데이트 메소드를 호출하려고 할 때이 문제가 발생했습니다. 예상 된 dict은 다음과 같습니다.
{'foo': True}
통과 된 사람은 다음과 같습니다.
{'foo': "True"}
전달할 모든 매개 변수가 예상되는 유형인지 확인하십시오.
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
'PYTHON' 카테고리의 다른 글
[PYTHON] Python 사전을 JSON 배열로 변환 (0) | 2018.10.18 |
---|---|
[PYTHON] 한 목록의 모든 값을 다른 목록에서 제거 하시겠습니까? [복제] (0) | 2018.10.18 |
[PYTHON] 파이썬 2.7 지원 끝? (0) | 2018.10.18 |
[PYTHON] pycrypto (RSA)를 사용하여 데이터 서명 및 확인 (0) | 2018.10.18 |
[PYTHON] 생성기 (파이썬에서)에서 단 하나의 항목을 선택하는 방법? (0) | 2018.10.18 |