2012-05-27 140 views
1

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

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

当试图在模板标签模块中导入我的应用模型时,我得到一个ImportError。 代码提高错误是这样的:

从django的导入模板
进口cms_fragments.models

寄存器= template.Library()

异常升高是这样的:

ImportError raise loading cms_fragments.templatetags.cms_fragments_tags:没有模块名为models

我敢肯定,我的应用程序布局是正确的:

| -cms_fragments

| - _ 初始化 _的.py
| -models.py
| -templatetags

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

我已经看到了与此相关的所有帖子,但我从来没有发现有人报告了一个应用程序与django-project中的代码与网站包中的代码之间的区别。

任何提示?

回答

1

我认为问题在于你导入/使用你想要的库的方式。如果导入的“模式”类似这样它应该工作:

from cms_fragments import models 

但它会更好,如果你发布的代码,你用这个“模型”包,因为我只是猜测你是怎么使用它。读你得到了错误,它似乎是您尝试引用“模型”模块是这样的:

models.some_thing_inside_models... 

,但在导入这样的:

import cms_fragments.models 

必须引用这样说:

cms_fragments.models.some_thing_inside_models... 

Here是一些文档,可以帮助您,并且很好地解释了如何使用您的proyect目录树。

相关问题