2012-05-27 111 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目錄樹。

相關問題