【问题标题】:Django, project structureDjango,项目结构
【发布时间】:2013-10-19 07:42:50
【问题描述】:

我目前正在做一个 django 项目。我对 django 并不完全陌生,但在弄清楚如何以最“djangonic”方式组织一些文件时遇到了一些困难。

我有一些计算东西的类,可以从 manage.py 的 cli 和 web 服务应用程序中使用。这些计算使用我的核心应用程序中的模型并调用数据库。

我面临的问题是我不知道将这些源文件放在哪里。

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

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

有没有尊重“django 生活方式”的简洁结构的想法?

谢谢

【问题讨论】:

    标签: python django structure


    【解决方案1】:

    问题是,这样做最“djangonic”的方式是根本没有拥有“核心应用程序”。您应该努力将功能拆分为单独的应用程序。我完全清楚这并不总是微不足道的。

    但是,假设您正在为一所学校设计一个 Intranet 网站。您将拥有一个处理学生帐户的应用程序,另一个生成时间表的应用程序,以及另一个用于内部留言板的应用程序,等等。每个应用程序都定义了自己的模型(没有“项目级模型”),但应用程序可以导入彼此的模型(因此留言板帖子可以有一个 ForeignKey 字段从“学生”应用程序指向学生)。不需要“主要”或“核心”应用程序(另请参阅:来自 DjangoCon 的 James Bennett's "writing reusable Django applications" presentation

    然后,您可以将管理命令放在命令处理的应用程序的management/commands 目录中。例如,如果一个命令从数据库中删除旧学生,它将进入students 应用程序内的management/commands

    【讨论】:

    • 是的,我是新的。我只是说“核心”应用程序,因为我不想提供与项目无关的细节。但是,感谢您的链接:)
    【解决方案2】:

    如果模块独立于 Django,那么它应该是一个独立的 Python 包,并带有一个 setup.py 来安装它。使用它的 Django 模型和 Web 服务可以像任何其他外部依赖项一样导入。

    如果模块依赖于你的 Django 应用程序,那么它应该在应用程序的目录中。如果它没有定义新模型,那么它不应该在models.py

    这能回答你的问题吗?

    【讨论】:

    • 它或多或少地回答了它。该模块是应用程序的一部分,使用 django 模型机制,但不使用 django 网络元素(视图、模板等)
    • 如果是用app的model,那我觉得app的目录下就好了。不在models.py 中,而是在另一个文件中,因为它没有定义模型,如你所说。
    猜你喜欢
    • 2017-08-01
    • 2020-03-27
    • 2019-03-18
    • 2015-05-19
    • 2014-01-22
    • 2020-11-13
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多