IT

"값이 너무 많아 압축을 풀 수 없습니다" 예외

itgroup 2023. 7. 22. 09:56
반응형

"값이 너무 많아 압축을 풀 수 없습니다" 예외

저는 장고에서 프로젝트를 진행하고 있으며 사용자 프로필을 만들기 위해 사용자 모델을 확장하기 시작했습니다.

유감스럽게도 문제가 생겼습니다.사용자 프로필을 템플릿 안에 넣으려고 할 때마다 (user.get_template.lastIP예를 들어, 다음 오류가 발생합니다.

환경:
요청 방법: GET요청 URL: http://localhost:8000/장고 버전: 1.1
파이썬 버전: 2.6.1
템플릿 오류:
템플릿 /path/to/base.tpl에서 라인 19의 오류렌더링하는 동안 예외가 발견됨: 값이 너무 많아 압축을 풀 수 없습니다.
19 : {{user.username}}({{user.get_profile.rep}}), 안녕하세요.어떻게 되가나요?로그아웃

예외 유형:/의 템플릿 구문 오류예외 값: 렌더링하는 동안 예외가 발견됨: 값이 너무 많아 압축을 풀 수 없습니다.

무슨 일이 일어나고 있는지, 내가 무엇을 잘못하고 있는지에 대한 아이디어가 있습니까?

이 예외는 태플의 압축을 풀려고 하지만 대상 변수의 수와 관련하여 태플의 값이 너무 많다는 것을 의미합니다.예: 이 작업은 1, 2, 3을 인쇄합니다.

def returnATupleWithThreeValues():
    return (1,2,3)
a,b,c = returnATupleWithThreeValues()
print a
print b
print c

하지만 이것은 당신의 오류를 야기합니다.

def returnATupleWithThreeValues():
    return (1,2,3)
a,b = returnATupleWithThreeValues()
print a
print b

인상

Traceback (most recent call last):
  File "c.py", line 3, in ?
    a,b = returnATupleWithThreeValues()
ValueError: too many values to unpack

자, 여러분의 경우 왜 이런 일이 일어나는지는 잘 모르겠지만, 아마도 이 대답이 여러분을 올바른 방향으로 인도할 것입니다.

하나의 변수로 압축을 풀어 봅니다.

파이썬은 그것을 목록으로 처리할 것입니다.

그런 다음 목록에서 압축을 풉니다.

def returnATupleWithThreeValues():
    return (1,2,3)
a = returnATupleWithThreeValues() # a is a list (1,2,3)
print a[0] # list[0] = 1
print a[1] # list[1] = 2
print a[2] # list[2] = 3

이 문제는 친숙해 보여서 제한된 양의 정보로 복제할 수 있는지 알아보려고 했습니다.

James Bennett의 블로그에서 빠른 검색 결과 사용자 프로파일을 사용하여 사용자 모델을 확장할 때 settings.py 의 일반적인 실수로 인해 장고가 이 오류를 발생시킬 수 있다는 항목이 발견되었습니다.

블로그 항목 인용하기

설정 값은 "appname.models.modelname"이 아니라 "appname.modelname"입니다.그 이유는 Django가 이것을 직접 가져오기 위해 사용하는 것이 아니라 앱 이름과 모델 이름만 원하는 내부 모델 로딩 기능을 사용하기 때문입니다.AUTH_PROFILE_MODULE 설정에서 "appname.models.modelname" 또는 "projectname.appname.models.modelname"과 같은 작업을 수행하려고 하면 Django가 "너무 많은 값을 풀 수 없음" 오류와 함께 폭발하므로 AUTH_PROFILE_MODULE 값에 "appname.modelname"을 입력했는지 확인하십시오.

OP가 트레이스백을 더 많이 복사했다면 아래와 같은 것을 볼 수 있을 것입니다. 제 AUTH_PROFILE_MODULE 설정에 "모델"을 추가하여 복제할 수 있었습니다.

TemplateSyntaxError at /

Caught an exception while rendering: too many values to unpack

Original Traceback (most recent call last):
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/debug.py", line 71, in render_node
    result = node.render(context)
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/debug.py", line 87, in render
    output = force_unicode(self.filter_expression.resolve(context))
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 535, in resolve
    obj = self.var.resolve(context)
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 676, in resolve
    value = self._resolve_lookup(context)
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/template/__init__.py", line 711, in _resolve_lookup
    current = current()
  File "/home/brandon/Development/DJANGO_VERSIONS/Django-1.0/django/contrib/auth/models.py", line 291, in get_profile
    app_label, model_name = settings.AUTH_PROFILE_MODULE.split('.')
ValueError: too many values to unpack

제 생각에 이것은 장고가 여전히 작은 오류가 예상된 예외를 던지지 않을 때 혼란을 야기하는 경향이 있는 약간의 수입 마법을 가지고 있는 몇 안 되는 경우 중 하나입니다.

AUTH_PROFILE_MODULE에 대해 "appname.modelname" 형식이 아닌 다른 형식을 사용하면 "app_label, model_name = settings"라는 행이 어떻게 발생하는지 보여줍니다.AUTH_PROFILE_MODULE.split('.'): "너무 많은 값을 풀 수 없습니다." 오류를 발생시킵니다.

저는 이것이 여기서 발생한 최초의 문제라고 99% 확신합니다.

get_profile() 호출 어딘가에 오류가 있을 가능성이 높습니다.요청 개체를 반환하기 전에 다음 행을 입력하십시오.

request.user.get_profile()

오류를 발생시키고 더 자세한 추적 정보를 제공하여 추가 디버그에 사용할 수 있습니다.

제가 Jinja2를 템플릿으로 사용할 때 이런 일이 발생합니다.django_extensions 명령을 사용하여 개발 서버를 실행하면 문제를 해결할 수 있습니다.

그것은 werkzeug 디버거를 사용하는데, 이것은 또한 훨씬 더 낫고 매우 좋은 대화형 디버깅 콘솔을 가지고 있습니다.디버그할 수 있도록 호출 스택의 모든 프레임에서 파이썬 셸을 실행하는 것은 약간의 Ajax 마법을 수행합니다.

루프에서 액세스를 시도하는 동안 열거를 잊었습니다.

던지를 .ValueError: too many values to unpack (expected 2):

for index, value in your_list:
  assert value is your_list[index]  # this line not reached

예외가 발생하지 않음:

for index, value enumerate(in your_list):
  assert value is your_list[index]

언급URL : https://stackoverflow.com/questions/1479776/too-many-values-to-unpack-exception

반응형