【问题标题】:Django views ImportErrorDjango 视图 ImportError
【发布时间】:2014-03-15 21:09:01
【问题描述】:

我不知道这个逻辑是否正确, 我正在尝试以 2 个不同的视图导入 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 shell 的错误:

>>> 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

【问题讨论】:

  • 听起来您在某处进行了循环导入。你能告诉我们导入错误(完整的追溯)吗?
  • render_map_geoloc 的依赖项未满。

标签: python django importerror


【解决方案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),它就会缺少那个依赖。

您可以在 SO 回答线程上找到更多详细信息 - Django App Dependency Cycle

【讨论】:

  • 好的,现在很清楚了.. 我在“实用程序”python 模块中找到了解决方案 puttimg render_map_geoloc,我在不止一个视图中调用了所有函数。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-10-26
  • 2023-03-03
  • 2014-03-31
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
相关资源
最近更新 更多