继承/扩展Django模块或填入同一个模块?

时间:2014-04-12 01:05:58

标签: python django module

对于即将开展的项目,我将拥有一个基本上将用户工作流程定义为3个步骤的站点。任务,检查,发布。该任务是普通用户所做的事情。管理员检查是某种质量保证,发布是后处理步骤。

一开始只会有一项任务,但是,将来我们希望有更多类型的任务,性质不同。

实施例

任务可能是解决数学问题列表并提交解决方案。另一个任务可能是,显示三张图片,用户必须告诉哪些图片包含相同的对象。任务是不同的,但将归结为一项需要检查的任务。

在检查中:应该有几种类型的检查。例如,对于数学,我们可以进行自动检查,比较以前设置的解决方案,而图片任务需要人工支持,以查看用户是否正确完成了任务。 您可以看到,某些任务带有某些检查。但是,对于图片任务,我们可以再次进行不同类型的检查。

我们可以进行全面检查,抽查或对多个执行相同任务的用户进行多数投票,或完全不同的事情。

Publishing将以多种方式发布已检查的任务:report,blogpost,写入数据库,生成有问题的任务列表。

模块

任务不同但它们是任务。因此,我认为每个任务都有一个模块,但是,它们都是任务。因此,我想完成两件事:

  • 具有任务的基本定义
  • 在相同的任务名称空间下执行任务

同样适用于检查和发布

如何实现这个/问题

拥有这么多模块是否有意义?对我来说确实如此。我可能会将某个任务重用于另一个项目!

拥有单个模块执行各种任务是个坏主意。因此,扩展基础模块!可能吗? (我很肯定的是,bc python和django都很棒,但是一些指针会很棒)

我希望将所有任务模块放在同一个文件夹/命名空间中。我知道它可能对可重用性(选择单个任务)不利,但是对于其他开发人员来说,更容易看到他们的新任务的去向。是否可以在相同的文件夹和路径/任务中将submisule或相同类型的模块分组到该文件夹​​?

在任务之外检查模块。对于类似结构的任务,可以重复使用检查。因此,不同的任务可以应用相同的检查模块。检查与任务不同,所以我希望它是一个模块,然后将特定的检查模块分配给某个任务。

讨论

这是我的故事:)我希望我的想法有意义,django老手可以告诉我,如果我有意义,是否有可能根本不可能!

道歉

我用我的手机输入这个,因为我的时间不多了,没有人讨论这个问题。请加上我的帖子格式,直到我可以进入我的电脑!

1 个答案:

答案 0 :(得分:1)

我会考虑这样的文件夹结构:

myproject
-> task
----> models
--------> __init__.py
--------> base.py
--------> math.py
--------> etc.
----> views
--------> __init__.py
--------> math.py
--------> etc.
----> urls
--------> __init__.py
--------> etc.
-> check
----> models
--------> __init__.py
--------> base.py
--------> etc.

-etc.- (you get the idea)

通过这种方式,您可以将您的Django项目划分为三个独立的应用程序,并且您将每个应用程序划分为'模型,视图,表格等分成不同的文件。

要导入特定的模型,视图,表单等,您只需:

from task.models.math import MathTask
from task.views.image import ImageView
etc.

这就是你如何制作抽象基础模型:

class BaseTask(models.Model):
    # your fields goes here

    class Meta:
        abstract = True