0

私はしばらくこれに頭をぶつけてきましたが、それを理解できないようです。カスタムテンプレートタグのセットを備えたアプリがあります。

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の両方からインポートすると、同じエラーが発生します。

トレースバック:ここ

アップデート

これが壊れていることに気付いたとき、私は無関係な何かに取り組んでいたので、プロジェクトの以前の既知の動作バージョンに戻りました。それでも同じ問題なので、ダニエルズはPYTHONPATHについて答えていると思いますが、どうすればこれを修復できますか?

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

__init __。pyはすべてそこにあり、群衆はProductにいるので、それは道にあるべきではありませんか?

アップデート2

私はシェルでいくつかの調査を行いました:

>>> 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

シェルコマンドが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時間後までは追加できません。

4

2 に答える 2

1

crowdアプリ自体はおそらくPythonpath上にありません。追加するか、プロジェクトからインポートしますfrom myproject.crowd.models import Foo, Bar

于 2012-05-30T15:48:44.110 に答える
1

シェル コマンドが 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
于 2012-05-31T16:37:56.253 に答える