2014-02-16 164 views
0

我不知道这个逻辑是否正确, 我试图导入2个不同视图中的Django视图。 我有一个进口环链是这样的:Django意见导入错误

a.views import b.views 
b.views import c.views 
c.views import d.views 

d.views import b.views 

,但是当我到了最后一步,我得到一个ImportError

如果我在d.views发表评论,避免导入b.views,它的工作原理。

我是新的Django,有人可以帮助我吗?

如果我在a.viewsd.views语法

from b.views import * 

它的作品使用,但..代码也不是那么可读。

如果我使用

from b.views import my_func 

这是行不通的!

这是从django的壳中的错误:

>>> import maps.views 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/Users/save/sites/myblog/maps/views.py", line 19, in <module> 
    from places.views import * 
    File "/Users/save/sites/myblog/places/views.py", line 22, in <module> 
    from posts.views import * 
    File "/Users/save/sites/myblog/posts/views.py", line 31, in <module> 
    from maps.views import render_map_geoloc 
ImportError: cannot import name render_map_geoloc 
+0

听起来像是你有一个圆形的进口某处。你能告诉我们导入错误(完全追溯)吗? –

+0

render_map_geoloc的依赖关系未被填满。 – Mutant

回答

1

因为循环依赖或循环引用的启示。

b depends on c 
c depends on d 
d depends on b #which depends on c 

不确定您使用的是什么目的。但是你明确地输入了这个函数,并且在它的使用之上。

看着你正在得到的错误,这可能是因为d的一些依赖关系是来自b,所以如果你from b.views import *,它会得到你的依赖关系。但是,如果您导入特定的视图(my_func),则缺少该依赖关系。

更多的细节,你可以找到苏答案线程 - Django App Dependency Cycle

+0

好吧,现在很清楚..我发现解决方案puttimg render_map_geoloc在一个“实用工具”python模块,其中我有所有的功能在多个视图中调用。谢谢! – Save