运行时错误:调用Python对象时超出最大递归深度
这个错误是在我尝试运行一个测试用例时出现的,这个测试用例写在我名为“administration”的django应用的models.py文件里:
from django.test import Client, TestCase
from django.core import mail
class ClientTest( TestCase ):
fixtures = [ 'testdata.json' ]
def test_get_register( self ):
response = self.client.get( '/accounts/register/', {} )
self.assertEqual( response.status_code, 200 )
错误具体出现在这一行:
response = self.client.get( '/accounts/register/', {} )
我的django版本是1.2.1,python版本是2.6,satchmo版本是0.9.2-pre hg-unknown。我是在windows平台(xp sp2)上编写代码的。
运行测试用例的命令是:
python manage.py test administration
完整的错误日志如下:
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 121, in by_host
site = by_host(host=host[4:], id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 124, in by_host
site = by_host(host = 'www.%s' % host, id_only=id_only)
File "build\bdist.win32\egg\threaded_multihost\sites.py", line 101, in by_host
site = Site.objects.get(domain=host)
File "C:\django\django\db\models\manager.py", line 132, in get
return self.get_query_set().get(*args, **kwargs)
File "C:\django\django\db\models\query.py", line 336, in get
num = len(clone)
File "C:\django\django\db\models\query.py", line 81, in __len__
self._result_cache = list(self.iterator())
File "C:\django\django\db\models\query.py", line 269, in iterator
for row in compiler.results_iter():
File "C:\django\django\db\models\sql\compiler.py", line 672, in results_iter
for rows in self.execute_sql(MULTI):
File "C:\django\django\db\models\sql\compiler.py", line 717, in execute_sql
sql, params = self.as_sql()
File "C:\django\django\db\models\sql\compiler.py", line 65, in as_sql
where, w_params = self.query.where.as_sql(qn=qn, connection=self.connection)
File "C:\django\django\db\models\sql\where.py", line 91, in as_sql
sql, params = child.as_sql(qn=qn, connection=connection)
File "C:\django\django\db\models\sql\where.py", line 94, in as_sql
sql, params = self.make_atom(child, qn, connection)
File "C:\django\django\db\models\sql\where.py", line 141, in make_atom
lvalue, params = lvalue.process(lookup_type, params_or_value, connection)
File "C:\django\django\db\models\sql\where.py", line 312, in process
connection=connection, prepared=True)
File "C:\django\django\db\models\fields\subclassing.py", line 53, in inner
return func(*args, **kwargs)
File "C:\django\django\db\models\fields\subclassing.py", line 53, in inner
return func(*args, **kwargs)
File "C:\django\django\db\models\fields\__init__.py", line 323, in get_db_prep
_lookup
return [self.get_db_prep_value(value, connection=connection, prepared=prepar
ed)]
File "C:\django\django\db\models\fields\subclassing.py", line 53, in inner
return func(*args, **kwargs)
File "C:\django\django\db\models\fields\subclassing.py", line 53, in inner
return func(*args, **kwargs)
RuntimeError: maximum recursion depth exceeded while calling a Python object
----------------------------------------------------------------------
Ran 7 tests in 48.453s
FAILED (errors=1)
Destroying test database 'default'...
1 个回答
1
Django的测试客户端使用默认的基本网址:
这意味着你的测试网址 /accounts/register/ 实际上变成了:
http://testserver/accounts/register/
所以你需要在Django的sites.site模型中添加'testserver'作为基本网址。
如果不这样做,Django客户端找不到'testserver'这个域名,就会导致最大递归深度超出限制。