Django Templatetags导入错误

时间:2012-05-30 15:29:45

标签: python django django-templates

我一直在反对这一点,但似乎无法弄明白。 我有一个带有一组自定义模板标签的应用程序:

from django import template
from crowd.models import Payment, Project, ProjectCategory

register = template.Library()


@register.filter
def is_customer(user, project):
   try:
      return Payment.objects.filter(user=user, project=project).count() > 0
   except:
      return False

投掷:

'project_tags' is not a valid tag library: ImportError raised loading crowd.templatetags.project_tags: No module named models

应用树看起来像:

crowd/
   -- __init__.py
   -- models.py
   templatetags/
      -- __init__.py
      -- project_tags.py

仅从模型和crowd.models导入都会给我带来同样的错误。

追溯:here

更新

当我注意到它被破坏时,我正在研究一些不相关的东西,所以我又恢复了一个早期的,已知的项目工作版本。仍然是同样的问题,所以我认为丹尼尔斯关于PYTHONPATH的回答是正确的,但是,我该如何修复呢?

>>> import sys
>>> sys.path
['/Users/****/Documents/dev/product/src/Product', ...]

__init __。py是一直都在那里,人群在产品中,所以它不应该在路径上吗?

更新2

我在shell中做了一些调查:

>>> from crowd.models import *
>>> from crowd.managers import *
>>> from crowd.constants import *
>>> from crowd.templatetags import *
>>> from crowd.templatetags import project_tags
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Users/Murph/Documents/dev/product/src/Product/crowd/templatetags/project_tags.py", line 4, in <module>
    from crowd.forms import SearchForm
  File "/Users/Murph/Documents/dev/product/src/Product/crowd/forms.py", line 5, in <module>
    from crowd.models import Payment, Project, ProjectUpdate, GalleryPhoto
ImportError: No module named models
>>> 

仍然不知道为什么特别是失败,特别是因为全面导入有效。

更新3

我花了一些时间才看到shell命令提供了比django更有用的消息,这导致了这个:

事实证明它甚至没有直接与project_tags相关,它只是一个非常有用的错误消息。 project_tags.py中的导入:

 from crowd.forms import SearchForm

正在打电话:

from crowd.models import Payment, Project, RewardLevel, ProjectUpdate, GalleryPhoto
forms.py中的

,应该是:

from models import Payment, Project, RewardLevel, ProjectUpdate, GalleryPhoto

我会尽可能地补充这个答案,显然直到8个小时之后才会这样。

2 个答案:

答案 0 :(得分:1)

您的crowd应用本身可能不在您的Python路径上。添加它,或从项目中导入:from myproject.crowd.models import Foo, Bar

答案 1 :(得分:1)

我花了一些时间才看到shell命令提供了比django更有用的消息,这导致了这个:

事实证明它甚至没有直接与project_tags相关,它只是一个非常有用的错误消息。 project_tags.py中的导入:

 from crowd.forms import SearchForm

正在打电话:

from crowdfunder.models import Payment, Project, RewardLevel, ProjectUpdate, GalleryPhoto
forms.py中的

,应该是:

from models import Payment, Project, RewardLevel, ProjectUpdate, GalleryPhoto