Django错误'解包值过多'在objects.get(id)中
我有一个这样的链接 http://gagandeepdesk/2690/,我在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
1 个回答
4
(r'^(?P<MediaId>\d+)/$', 'scango.scanner.views.download')
也许可以试试这个?
这是一个命名组的例子。
在Python的正则表达式中,命名组的写法是(?P
pattern),其中name是组的名字,pattern是你想要匹配的模式。