【问题标题】:django structure for multiple modules多个模块的django结构
【发布时间】:2013-04-11 14:11:34
【问题描述】:

我对 django 和 python 也很陌生。我想尝试一个用 django 编写的项目。

假设项目有 3 个模块

  1. 用户
    • CRUD
    • 忘记密码
    • 登录
  2. 预订
    • CRUD
    • 搜索
  3. 默认(基本上是web用户查看)
    • 首页
    • 关于我们

所有这些对于同一个实体都有不同的业务逻辑。

我应该为此创建 3 个应用程序吗?如果是 3 个不同的应用程序,那么表名都是不同的,因为它会自动为表名添加前缀。

有什么建议吗?

【问题讨论】:

    标签: python django module tablename


    【解决方案1】:

    这个问题真的没有正确答案。一般来说,将任何编程任务分解为“模块”的方式在很大程度上取决于个人喜好。

    我对这个主题的看法是从单个模块开始,只有在“必要”时才将其分解为更小的模块,例如当单个模块变得过大时。

    关于应用程序,如果所有应用程序共享相同的数据库表,您可能会发现在一个应用程序中完成所有事情会更容易。我认为只有当您想在多个项目之间共享同一个应用程序时才真正需要使用多个 Django 应用程序。

    【讨论】:

      【解决方案2】:

      我同意@aya 的回答,并且我还支持您的多个模块的结构。在我的项目中,我创建了 18 个应用程序。每个应用执行不同的规则:

       1. accounts 
            - login
            - forgot password
            - register
            - profile
       2. common
            //in here all the common function use by different apps
       3. front
            - home
            - testimonial
       4. guides
            //tutorials
      

      还有更多应用...

      我这样安排是为了便于跟踪、调试和查找代码。如果您的问题是表的名称,您可以设置class Meta of db_table

      【讨论】:

      • 我还为开发、本地、heroku、生产等创建了不同的设置。
      • 那么模型类呢?假设我想在两个模块中使用用户模型,它应该是 2 个单独的文件还是一个全局文件?
      • @JsLim 我的应用有不同的 model_class、form_class 等等。如果我在不同的模块中调用模型,我只是导入它,或者像以前那样因为懒惰打字,我使用 get_model 在不同的模块中调用我的所有 model_class。但现在我更喜欢导入它,有一个干净和排列代码。您还可以使用相对导入来减少导入行。我也做继承,所以我不能违反 DRY 原则。有很多方法可以减少代码
      • 感谢评论,我试试看
      【解决方案3】:

      我自己对 Django 和 Python 也比较陌生。在实践中,试着让你的 Django 应用程序做一件事并且把它做好。如果您发现应用程序变得越来越复杂,则可能值得将其拆分为多个应用程序。

      我不会担心数据库表名,因为 Django 会为您处理数据库交互。如果你的应用和模型命名得当,你的代码应该是相当自我记录的。

      我最近从电子书2 Scoops of Django 中学到了很多关于如何设置和布局 Django 项目的“最佳实践”。我与他们没有任何关系,但我从中学到了很多。

      另外,如果您还没有,请务必通过Django tutorial

      希望这有帮助!

      【讨论】:

      • 最近在NetTuts上net.tutsplus.com/tutorials/python-tutorials/…也发布了另一个教程
      • 感谢您的评论。我已经阅读了一些官方教程,但它只展示了基本的东西。这就是我在这里发布问题的原因。
      【解决方案4】:

      专注于让您的应用可重复使用。这样,您将在下一个项目中节省大量时间。关于它的好文章可在Django's website 获得。

      如果您有紧密集成的模块或相互依赖,那么将它们放在单独的应用程序中并没有真正的好处,因为您永远不会单独使用它们。组织在单独的 Python 模块中就可以了。

      在考虑项目组织时,也不要考虑“我的表将如何命名”。表格可以轻松重命名,但随着项目的发展,糟糕的设计会给您带来麻烦。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-06
        • 1970-01-01
        • 2012-10-09
        • 2020-04-25
        • 1970-01-01
        • 2010-12-09
        • 2012-03-12
        • 1970-01-01
        相关资源
        最近更新 更多