如何处理一个被多个应用程序使用的django项目中的通用代码

7 人关注

在深入研究django的过程中,我遇到了一个挑战,那就是如何处理不属于一个应用程序的代码,而是由多个应用程序共享/使用。

I would not(!) 喜欢把它作为应用程序的一部分来存储(以避免应用程序的依赖性),但要把它放在一个特定的地方。

目前我的最佳做法是创建一个Django应用程序" 共享 "中,我把这个代码/功能放在其中

所以我的项目结构看起来与此类似。

mysite/
    manage.py
    mysite/
    shared

是否有一个 "django最佳范例 "或一个更实用的方法来处理这个问题?

4 个评论
我通常会创建一个名为 "核心 "的应用程序,但我并不打算将其称为一个 best 做法,但它已被受人尊敬的来源推荐。你说的是什么意思? 避免应用程序的依赖性 ?
udo
谢谢。 应用程序的依赖性 我的意思是,当我将代码放在 app1 那么其他使用它的应用程序将取决于 app1 .
应用程序的依赖性会产生问题吗?比依赖一个简单的Python模块更大的问题?
udo
我想把功能隔离开来,这样应用程序就会变得独立,我可以在其他项目中重新使用它。 共享 是一个应用程序......但它就像一个个人图书馆,只包含那些可以被使用的代码。 not(!) 不知道这样说是否更清楚......。
python
django
udo
udo
发布于 2015-09-13
2 个回答
miki725
miki725
发布于 2021-08-25
已采纳
0 人赞同

我通常做与你完全相同的事情。我不确定这是否是最佳做法,但我看到其他人也在使用同样的方法。我喜欢这样做是因为。

  • when the shared / core /etc app becomes useful in other projects, you can package it as reusable app which can be installed via pip in other projects
  • it does not interfere with existing apps in the project
  • 关于把它打包成可重复使用的lib的唯一注意点是,我建议把它重命名为 shared 以外的东西。原因是,当你把它打包到PyPI时,比如说作为 my_django_utils ,那么你将不得不改变所有项目中的所有导入。如果你现在想出一个通用的名字,那么你可以在将来轻松地打包它,而不需要改变所有的导入。

    djpanda
    djpanda
    发布于 2021-08-25
    0 人赞同