这个问题看起来很熟悉,所以我想从有限的信息中复制一下看看是否能够重现。
快速搜索在James Bennett的博客
这里找到了一个条目,提到当使用UserProfile扩展User模型时,在settings.py中常见的错误会导致Django抛出此错误。
引用博客条目:
设置的值不是“appname.models.modelname”,而只是“appname.modelname”。原因是Django不使用它进行直接导入;相反,它使用一个内部模型加载函数,该函数仅需要应用程序名称和模型名称。尝试在AUTH_PROFILE_MODULE设置中执行诸如“appname.models.modelname”或“projectname.appname.models.modelname”之类的操作将导致Django崩溃,出现可怕的“too many values to unpack”错误,请确保您已经将“appname.modelname”放入AUTH_PROFILE_MODULE的值中,除此之外别无其他。
如果OP复制了更多的回溯信息,我希望看到像下面这样的信息,通过将“models”添加到我的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
我认为这是Django仍然存在一些导入魔法的少数情况之一,当小错误没有抛出预期的异常时,往往会引起混淆。
从我发布的回溯末尾可以看到,除了使用“appname.modelname”表单以外的任何内容作为AUTH_PROFILE_MODULE都会导致该行“app_label,model_name = settings.AUTH_PROFILE_MODULE.split('。')”抛出“too many values to unpack”错误。
我99%确定这就是此处遇到的原始问题。