2017-06-04 93 views
0

我是Django的新手(所以这可能是一个Python3问题)。另外,我还阅读了其他类似的问题,例如Error importing Python moduleDjango:导入自定义Python3类的问题

我有以下结构的目录:

-- my_class

-- -- __init__.py

-- -- custom_class_1.py

-- -- custom_class_2.py

其中在文件custom_class_2.py有行:

from custom_class_1 import Custom_Class_1 
class Custom_Class_2: 
    self.thing = Custom_Class_1() 

即一个类将其他人建造的。

使用从以前链接的问题

这会导致Django的服务器吐了这个错误solution

from custom_class_1 import Custom_Class_1 
ImportError: No module named 'Custom_Class_1' 

这让我觉得定义一个类时,我没有按照Python的约定,建在另一个类(但都在同一个目录中)。

我做错了什么,我该如何解决?

+2

如果您尝试从'.custom_class_1导入Custom_Class_1'(在'custom_class_1'前面有一个点表示相对导入),它会起作用吗? – MSeifert

+0

Django错误消息没有意义 - 它说'Custom_Class_1'是_module_。你确定这是实际的错误信息吗? –

+0

@ MSeifert似乎工作! – SumNeuron

回答

1

你可以使用一个relative import (see PEP 328 for more details)

from .custom_class_1 import Custom_Class_1 

.custom_class_1前告诉Python模块custom_class_1应该从同一目录中导入。

+0

因此,这是从'views.py'文件内工作的,但是我怎样才能在'/ template/my_app/index.html'文件中做到这一点? – SumNeuron

+0

你能否问一个新问题并在其中包含相关文件(请随时链接到评论中的新问题)?我不确定我可以在评论中回答这个问题(不知道你的文件)。 – MSeifert

+0

是的,这里是https://stackoverflow.com/questions/44353505/django-import-custom-class-in-template-html-instead-of-view – SumNeuron

0

Django项目中的导入应该使用项目根目录中的模块路径。 例如,如果my_class是在你的Django项目的根目录, 那么你就可以导入Custom_Class_2

from my_class.custom_class_2 import Custom_Class_2 

顺便说一句,这是奇怪的名字Python模块和类的名称中“下课”。