Django在哪里放置共享模型和逻辑

时间:2017-08-05 19:40:09

标签: python django conventions

我有以下文件夹设置:

  • myproject的
  • 网络
  • 工人

Web项目是一个包含典型django设置的网站,包括模型和一些服务类,它们将逻辑从视图中移开。该网站将显示来自数据库的数据。 worker文件夹包含2个类,这些类填充数据库并对其进行聚合。这两个类就像后台进程。我的问题是,我应该如何构建这个?

  • 每个工人类应该获得自己的应用程序文件夹
  • 如果是这样,我宁愿将模型移出myproject文件夹中的web项目,因为它们是在应用程序之间共享的。然而,这似乎是反对django惯例,为什么呢?会议将如何处理这个问题?
  • 如果没有,我应该在哪里放置这些工作流程?我该怎么办呢?

提前致谢!

2 个答案:

答案 0 :(得分:0)

通常如果我要在不同部分之间共享东西,我要么: 1)创建一个lib并通过pip安装它 2)在项目中创建一个帮助文件夹

答案 1 :(得分:0)

将项目和应用程序分开,并创建适当的Python包来处理依赖项。即。

src/sites/web   <-- the project, containing manage.py, settings and root urls

src/apps/myapp  <-- the app, containing models, views, etc
src/apps/myapp/worker  <-- strongly related functionality

src/sites/web/setup.py(和/或requirements.txt)中,您可以将myapp添加为(安装)依赖项。

如果worker只是松散相关的功能,那么单独的包就有意义了,例如:

src/lib/worker

其中src/lib/worker/setup.py(和/或requirements.txt)会将myapp添加为依赖项,而src/sites/web/setup.py会将worker添加为依赖项。