我有一个巨大的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语句放在文件的底部,但这看起来并不太优雅。
答案 0 :(得分:0)
您应该在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函数基本上不需要在任何地方导入。
答案 1 :(得分:0)
首先,制作一个视图包。
--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__
中导入的所有内容都可以使用视图导入内容导入。
答案 2 :(得分:0)
循环导入是否与外键关系有关?
如果是这样,您可以将类定义为字符串。
item = models.ForeignKey("SomeOtherClass")
如果失败,我通常会将逻辑提取到第三个文件,如e-satisf所暗示的。