我正在编写自定义模板标签,用于可重复使用的django应用程序 我定义的标签是在同一个应用程序中引用模型,所以我需要导入它。
如果我将我的应用程序代码复制到django项目中,一切正常,但如果我使用distutils打包我的应用程序并通过pip或setup.py install安装它(因此应用程序代码被复制到site-packages中),我不能用它。
当尝试在模板标签模块中导入我的应用程序模型时,我得到一个ImportError。 提出错误的代码如下:
来自django导入模板
import cms_fragments.modelsregister = template.Library()
引发的例外是:
ImportError引发加载cms_fragments.templatetags.cms_fragments_tags:没有名为models的模块
我很确定我的应用程序布局是正确的:
| -cms_fragments
| - 的 _ 初始化 _ 的.py
| -models.py
| -templatetags| - 的 _ 初始化 _ 的.py
| -cms_fragments_tags.py
| -views.py
我看过所有与此相关的帖子,但我从来没有发现任何人在django项目中生成代码的应用程序与生活在site-packages中的代码之间存在差异。
任何提示?
答案 0 :(得分:1)
我认为问题在于您导入/使用所需库的方式。如果您导入这样的“模型”,它应该可以工作:
from cms_fragments import models
但如果你发布使用这个“模型”包的代码片段会更好,因为我只是猜测你是如何使用它的。阅读你得到的错误,似乎是你试图像这样引用“模型”模块:
models.some_thing_inside_models...
但是当您像这样导入时:
import cms_fragments.models
你必须这样引用它:
cms_fragments.models.some_thing_inside_models...
Here是一些可以帮助您的文档,它解释了如何使用proyect目录树。