【问题标题】:Django error 'too many values to unpack' in objects.get(id)objects.get(id) 中的 Django 错误“要解压的值太多”
【发布时间】:2011-11-20 19:46:25
【问题描述】:

我有像 http://gagandeepdesk/2690/ 这样的 url,我正在使用 urls.py 文件进行过滤,并将 2690 作为参数之一发送给函数。

我的 urls.py 过滤器看起来像这样,

url(r'^(\d+)/', 'scango.scanner.views.download'),

那个函数看起来像这样,

def download(request, MediaId):
    media = Media.objects.get(id=int(MediaId))
    #print media
    return HttpResponse(FileIterWrapper(open(media.path)))

我在线收到错误“太多值无法解压”

media = Media.objects.get(id=int(MediaId))

我还尝试在没有请求对象的情况下独立运行此函数,它运行得非常好。所以,我很困惑我在这里做错了什么。

环境:

Request Method: GET
Request URL: http://gagandeepdesk/2690/

Django Version: 1.3
Python Version: 2.7.1
Installed Applications:
['haystack',
 'scanner',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')

追溯:

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "C:\Users\gagasing\Desktop\ideas\scango\..\scango\scanner\views.py" in download
  21.   media = Media.objects.get(id=int(MediaId))
File "C:\Python27\lib\site-packages\django\db\models\manager.py" in get
  132.         return self.get_query_set().get(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in get
  343.         clone = self.filter(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in filter
  552.         return self._filter_or_exclude(False, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\db\models\query.py" in _filter_or_exclude
  570.             clone.query.add_q(Q(*args, **kwargs))
File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in add_q
  1170.                             can_reuse=used_aliases, force_having=force_having)
File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in add_filter
  1013.         arg, value = filter_expr

Exception Type: ValueError at /2690/
Exception Value: too many values to unpack

【问题讨论】:

  • 发布完整的回溯。如果你print MediaId,你会得到什么?
  • @agf 添加了完整的回溯。它没有到达打印声明。
  • @gag: 那是因为它应该在get之前
  • 请在正则表达式末尾添加$。在get中也使用pk而不是id

标签: python django


【解决方案1】:
 (r'^(?P<MediaId>\d+)/$', 'scango.scanner.views.download')

也许试试这个?

这是命名组的示例。

在 Python 正则表达式中,命名正则表达式的语法 groups 是 (?Ppattern),其中 name 是组的名称,并且 pattern 是要匹配的一些模式。

【讨论】:

  • 我试过他的模式,它会打印出数字。尽管如此,我还是会使用和你一样的模式。
猜你喜欢
  • 2018-12-19
  • 2017-05-21
  • 2019-01-13
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
相关资源
最近更新 更多