我有一个很大的views.py
文件,所以我把它分成views.py
和admin_views.py
. 由于函数往往依赖于另一个文件中的函数,所以我做了以下事情:
# views.py
from admin_views.py import a,b,c
# admin_views.py
from views.py import d,e,f
我发现这会导致循环依赖,并且导入不起作用。解决此问题的最佳方法是什么?我知道我可以将 import 语句放在文件的底部,但这似乎不太优雅。
我有一个很大的views.py
文件,所以我把它分成views.py
和admin_views.py
. 由于函数往往依赖于另一个文件中的函数,所以我做了以下事情:
# views.py
from admin_views.py import a,b,c
# admin_views.py
from views.py import d,e,f
我发现这会导致循环依赖,并且导入不起作用。解决此问题的最佳方法是什么?我知道我可以将 import 语句放在文件的底部,但这似乎不太优雅。
您不应该在 views.py 文件中有核心逻辑。您应该将此核心逻辑放入其他 python 文件中(某些逻辑适用于 models.py 或 forms.py)并将其导入到 views.py 中。基本上,在大多数情况下,您应该将 views.py 文件导入到 urls.py 文件中。urls.py 文件也可以采用如下格式:
urlpatterns = patterns('management.views',
#url(r'^index/$', direct_to_template, {'template': 'stats/index.html'},
# name="index"),
url(r'^pay_invoices/$', 'pay_invoices', name='pay_invoices'),
)
这使得views.py 函数基本上不需要在任何地方导入。
首先,制作一个视图包。
--view
|_ __init__.py
|_ main.py # previewsly view.py
|_ admin.py # previewsly view_admin.py
然后,添加一个新文件,其中将包含您需要导入的部分main
或admin
:
--view
|_ __init__.py
|_ main.py
|_ admin.py
|_ base.py
然后移动导入,以便它们从base
.
最终,在 中__init__
,从 main et admin 导入您需要的东西。您导入的所有内容__init__
都可以使用 from views import stuff 导入。
循环导入是否与外键关系有关?
如果是这样,您可以将类定义为字符串。
item = models.ForeignKey("SomeOtherClass")
如果我通常无法将逻辑提取到第三个文件中,例如 e-satis 建议。