Python 如何处理多个应用程序使用的django项目中的公共代码

Python 如何处理多个应用程序使用的django项目中的公共代码,python,django,Python,Django,深入django,我遇到了处理代码的挑战,这些代码不是特定于一个应用程序的,而是由多个应用程序共享/使用的 我不想(!)将其作为应用程序的一部分存储(以避免应用程序依赖),而是将其存储在特定的位置 目前,我的最佳实践是创建一个django应用程序“共享”,我将此代码/功能放在其中 因此,我的项目结构与此类似: mysite/ manage.py mysite/ ... shared ... app1 ... app2

深入django,我遇到了处理代码的挑战,这些代码不是特定于一个应用程序的,而是由多个应用程序共享/使用的

我不想(!)将其作为应用程序的一部分存储(以避免应用程序依赖),而是将其存储在特定的位置

目前,我的最佳实践是创建一个django应用程序“共享”,我将此代码/功能放在其中

因此,我的项目结构与此类似:

mysite/
    manage.py
    mysite/
     ...
    shared
     ...
    app1
     ...
    app2
     ...
    app3
     ...
    ...

有没有一个“django best parctice”或更实用的方法来处理这个问题?

我通常会做和你完全一样的事情。不确定这是否是最佳实践,但我见过其他人使用相同的方法。我喜欢它是因为:

  • 共享
    /
    核心
    /etc应用程序在其他项目中变得有用时,您可以将其打包为可重用的应用程序,可通过
    pip
    在其他项目中安装
  • 它不会干扰项目中现有的应用程序

关于将其打包为可重用库的唯一注意事项是,我建议将其重命名为其他的
共享
。原因是,当您将其打包为PyPI时,比如说作为
my_django_utils
,那么您必须更改所有项目中的所有导入。如果你现在想出一个通用名称,那么你以后就可以轻松打包,而无需更改所有导入内容。

我通常会创建一个名为“core”的应用程序,我甚至不认为这是一个最佳做法,但这是受人尊敬的消息来源推荐的。你说的避免应用依赖是什么意思?谢谢。对于应用依赖性,我的意思是,当我将代码放在app1中时,使用它的其他应用将依赖于app1。应用依赖性是否会产生问题?一个比依赖一个简单的Python模块更大的问题是什么?我想隔离这个功能,这样应用程序就可以自主运行,我可以在其他项目中重复使用它。仅仅因为依赖关系而不得不部署另一个应用程序(具有专用功能),这对我来说并不好。当然,共享也是一个应用程序。。。但它就像一个个人库,只包含不特定于(!)应用程序的代码。不确定这是否能让事情变得更清楚。。。