【问题标题】:Separating Django App Views分离 Django 应用程序视图
【发布时间】:2010-10-16 07:53:50
【问题描述】:

如果 app/views.py 文件变得非常大,我应该把它分开吗?如果是这样,最好的方法是什么?

【问题讨论】:

    标签: django views


    【解决方案1】:

    我会将具有相似目的或功能的视图分离到一个文件中,并将其包含在 views.py 中。我这样做只是为了可读性和维护。例如,特定对象或对象组的 CRUD 视图。

    通过将这些视图直接导入到主views.py 文件中,它允许不熟悉您的约定的人找到什么在哪里。

    views/object_view.py
    

    【讨论】:

      【解决方案2】:

      一些开发人员将他们的视图设为 python package 而不是模块。这只是意味着在您的应用程序中创建一个名为 views 的目录,然后将每个视图放在该包中自己的模块(文件)中。

      然后你创建一个__init__.py 文件(这就是使它成为一个包的原因)。该文件可以为空,也可以将所有视图模块导入到自己的命名空间中。

      如果它是空的,您必须直接导入您需要的每个视图,否则您可以像导入 views.py 模块一样导入它。

      【讨论】:

      • 这是我为模型对象所做的,因为我正在处理一个大型遗留域。
      【解决方案3】:

      在理想世界中,您不应该这样做。相反,请尝试将您的代码重构为不同的 django 应用程序,以满足您项目所需的每个子目的。这样,您可以对项目进行分区,甚至比仅拆分 views.py 文件时更好。

      有关如何将项目拆分为不同应用程序的提示,我建议阅读 James Bennett 的 Practical Django Projects,这是我现在正在重读的内容 :)

      【讨论】:

        【解决方案4】:

        没有通用的最佳方法。但是对于您的情况,有一个正确的方法

        • 将视图放在其自己的文件中,然后将它们导入到您的视图中。这很好,只是看看它是如何工作的
        • 在项目内部制作一个独立的应用程序来维护一组视图
        • 创建您自己的 generic views,共享您的大多数应用所共有的视图

        作为一个开始的例子: 我建议你从模型开始,自己动手:

        • 您有多少 个模型?
        • 它们实际上都相关还是可以分组?
        • 如果可以分组将应用拆分为两个应用
        • 因此您还可以拆分视图
        • 确定哪些视图函数相似并使其通用

        【讨论】:

          猜你喜欢
          • 2011-08-11
          • 2015-07-21
          • 1970-01-01
          • 2017-07-05
          • 2012-12-05
          • 1970-01-01
          • 2013-05-11
          • 2017-03-29
          • 1970-01-01
          相关资源
          最近更新 更多