0

我正在为可重用的 django 应用程序编写自定义模板标签。
我定义的标签是在同一个应用程序中引用一个模型,所以我需要导入它。

如果我将我的应用程序代码复制到 django 项目中,一切正常,但是如果我使用 distutils 打包我的应用程序并通过 pip 或 setup.py install 安装它(因此应用程序代码被复制到站点包中),我无法使用它。

尝试在模板标签模块中导入我的应用程序模型时,我收到 ImportError。引发错误的代码是这样的:

从 django 导入模板
导入 cms_fragments.models

注册=模板.库()

引发的异常是这样的:

ImportError 引发加载 cms_fragments.templatetags.cms_fragments_tags:没有名为模型的模块

我很确定我的应用程序布局是正确的:

|-cms_fragments

|- _ init _ .py
|-models.py
|-templatetags

|- _初始化_ .py
|-cms_fragments_tags.py
|-views.py

我已经看过与此相关的所有帖子,但我从未发现有人报告在 django 项目中的代码与在站点包中的代码之间存在这种差异。

有什么提示吗?

4

1 回答 1

0

我认为问题在于您导入/使用所需库的方式。如果您像这样导入“模型”,它应该可以工作:

from cms_fragments import models

但是,如果您在使用此“模型”包的地方发布一段代码会更好,因为我只是在猜测您是如何使用它的。阅读您收到的错误,似乎您正在尝试像这样引用“模型”模块:

models.some_thing_inside_models...

但是当你像这样导入时:

import cms_fragments.models

您必须以这种方式引用它:

cms_fragments.models.some_thing_inside_models...

是一些可能对您有所帮助的文档,并且很好地解释了如何使用您的项目目录树。

于 2012-05-27T22:32:14.913 回答