Django,项目结构

4

我目前正在做一个Django项目。我并不是完全不懂Django,但是在组织一些文件方面仍然有些困难。

我有一些类可以计算数据,并且可以通过manage.py的命令行界面和Web服务应用程序来使用。这些计算使用了来自核心应用程序的模型,并调用数据库。

我遇到的问题是我不知道该把这些源文件放在哪里。

我不想将它们放在“lib”文件夹中。我认为这个文件夹中的模块将是独立于Django的模块。

目前,该模块位于我的应用程序的模型中。但是由于它没有定义任何新结构,我不认为这是最干净的方式。

有没有什么好的方法能够以符合“Django生活方式”的干净结构存放呢?

谢谢!

2个回答

6
事实上,最符合"Django风格"的做法是根本不需要一个"核心应用程序"。您应该努力将功能拆分为单独的应用程序。我完全意识到这并不总是容易的。
但是,假设您正在为一所学校设计内部网站。您将有一个处理学生帐户的应用程序,另一个生成课程表的应用程序,还有一个用于内部留言板等。每个应用程序定义自己的模型(没有“项目级别模型”),但应用程序可以导入彼此的模型(因此留言板帖子可以具有指向“学生”应用程序中的学生的ForeignKey字段)。没有必要使用“主”或“核心”应用程序(请参见:DjangoCon的James Bennett的“编写可重用的Django应用程序”演示文稿)。
然后,您将把管理命令放在处理命令的应用程序的management/commands目录中。例如,如果命令从数据库中删除旧的学生,则会进入students应用程序中的management/commands

是的,我知道。我只是说“核心”应用程序,因为我不想提供关于项目的无关细节。不过,谢谢你提供链接 :) - John Smith

1
如果该模块与Django无关,则应该是一个独立的Python包,包含一个setup.py文件以进行安装。使用它的Django模型和Web服务可以像其他外部依赖项一样导入。
如果该模块依赖于您的Django应用程序,则应将其放在应用程序的目录中。如果它不定义新模型,则不应该在models.py中。
这回答了你的问题吗?

1
它更或多或少地回答了这个问题。该模块是应用程序的一部分,使用Django模型机制,但不使用Django Web元素(视图,模板等)。 - John Smith
如果它使用应用程序的模型,那么我认为它应该放在应用程序目录中。不是在models.py中,而是在另一个文件中,因为它不定义模型,正如你所说的那样。 - janos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接