Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django项目中的两个应用程序之间导入_Python_Django_Import - Fatal编程技术网

Python 在django项目中的两个应用程序之间导入

Python 在django项目中的两个应用程序之间导入,python,django,import,Python,Django,Import,我的django项目中有两个应用程序(app1和app2) 我很好奇是否有一种方法可以在应用程序之间导入东西 baseProject --app1 ----models.py ----etc.. --app2 ----models.py ----etc.. 在app2中,我希望能够从app1的models部分导入一些东西。是否有一个预定的方法来实现这一点,或者我正在计划糟糕的架构。您所建议的是良好的和公认的实践。从app2,您只需执行以下操作:从app1.models导入SomeMod

我的django项目中有两个应用程序(app1和app2)

我很好奇是否有一种方法可以在应用程序之间导入东西

baseProject  
--app1
----models.py  
----etc..
--app2
----models.py
----etc..

在app2中,我希望能够从app1的models部分导入一些东西。是否有一个预定的方法来实现这一点,或者我正在计划糟糕的架构。

您所建议的是良好的和公认的实践。从app2,您只需执行以下操作:
从app1.models导入SomeModel
。例如,您可能习惯于从
django.contrib.auth
应用程序导入
User
模型。这是django应用程序可重用性的部分预期好处。

您完全可以做到这一点,只需像往常一样导入即可。许多与身份验证/注册相关的应用程序从django附带的“django.contrib.auth”应用程序导入模型。您可以从任何应用程序自由导入,无论是否是您编写的应用程序

你只需要确保应用程序在你的PYTHONPATH上,这样就可以导入它们了


<>你说,在应用程序导入之前先考虑一下你的设计是很好的。确保您没有造成应用程序之间存在循环依赖关系的情况。

初步测试似乎表明这不起作用。我收到一个导入错误。注意:我正在两个自定义应用之间工作。不是内置的int-django应用程序。@Aaron:这只是一个示例--用
app1.models
文件中定义的模型名称替换
SomeModel
。另外,它是一个定制的应用程序并不重要,它的原则是一样的:只要app1和app2在你的路径上,你就应该没事。是的。我只是用你的语法来保持通用性。我已经做了几个小时了,老实说,我没有做太多的测试。在将项目名称插入import语句后,一切都顺利运行。仍在考虑重组。看起来这是一个蟒蛇的问题。我想我只是要重新考虑我的设计。谢谢你。看来我忽略了显而易见的事实。让它工作起来。忘了将我的项目名称添加到导入语句中。如果需要从彼此导入函数/类等(递归导入)的文件,则可能会抛出错误。我不确定这到底是什么时候发生的,但如果这是一个问题,您只需要让其中一个函数导入模块(即在def/class语句之后),而不是将其导入到文件的主命名空间中。这个链接比我更能说明这一点: