TemplateSyntaxError在渲染时捕获ImportError:无法导入名称prepare_lookup_value

时间:2013-10-01 08:09:33

标签: python django django-grappelli

我是Python(2.7)和Django(1.3.1)的新手,我不确定调试此问题的下一步应该在哪里。一点背景,这个应用程序在我的生产环境中正常运行,该环境位于运行Ubuntu的EC2实例上。我在运行Mountain Lion的开发机器上运行时遇到了麻烦。我遵循了标准练习,并使用virtualenv来保持所有沙盒的正确性。

尝试渲染这条非常无害的行时会发生错误:

<meta property="facebook:login_url" content="{% url socialauth_begin 'facebook' %}" />

抛出异常:

Exception Value: Caught ImportError while rendering: cannot import name prepare_lookup_value
Exception Location: /dev/Sites/whattest/env/lib/python2.7/site-packages/grappelli/views/related.py in <module>, line 15

line 15: from django.contrib.admin.util import prepare_lookup_value

我认为这是某种类型的路径问题,但此时我无法在何处/如何跟踪它。

1 个答案:

答案 0 :(得分:2)

当前版本的django-grappelli与Django 1.4和1.5兼容;所以我假设django-grapelli导入的django.contrib.admin.util.prepare_lookup_value在Django 1.3中根本不可用。

无论如何,我不明白为什么有人会用这样一个旧版本的Django开始新的东西,除非是出于遗留原因。

更新:实际上,这个确切的问题似乎并非如此 - prepare_lookup_value于2011年推出,1.3于2013年发布,由git blame决定。但是,该功能的位置已从django.contrib.{util to utils}更改,您的代码正在尝试导入django.contrib.admin.util.prepare_lookup_value

由于您似乎使用旧版本(至少某些)软件包,我建议将您的venv中的所有软件包(包括django-grapelli)升级到最新版本并查看问题是否仍然存在。