Django:“projects”vs“apps”

问题:

我有一个相当复杂的“产品”我正在准备使用Django构建。在这方面,我将避免使用术语“项目”和“应用程序”,因为我在Django中不清楚其具体含义。
项目可以有很多应用程序。许多项目可以共享应用程序。精细。
我不是重新创造博客或论坛 – 我看不到我的任何部分的产品在任何上下文都可重用。直观地,我会称之为“应用程序”。然后我在一个“应用程序”文件夹中完成所有工作吗?
 If so …根据Django的project.app命名空间,我的倾向是使用myproduct.myproduct,但当然不允许(但是我正在构建的应用程序是我的项目,而我的项目是一个应用程序!)。因此,我相信,或许我应该通过为每个“重要”模型构建一个应用程序来处理Django,但是我不知道在我的架构中绘制边界以将其分成应用程序的位置 – 我有很多具有相对复杂关系的模型。
我希望有一个共同的解决方案

回答:

什么是阻止你使用myproduct.myproduct?你需要实现的,大致包括这样做:

django-admin.py startproject myproduct
cd myproduct
mkdir myproduct
touch myproduct/__init__.py
touch myproduct/models.py
touch myproduct/views.py

等等。如果我说views.py不必被称为views.py,会有帮助吗?如果您可以在python路径上命名一个函数(通常是package.package.views.function_name),它将被处理。就那么简单。所有这些“项目”/“应用程序”的东西只是python包。
现在你应该怎么做?或者说,我该怎么办?那么,如果你创建了一个重要的可重用功能,比如说一个标记编辑器,那就是当你创建一个可能包含widgets.pyfields.pycontext_processors.py等的所有东西的时候,你可以创建一个“顶级应用”进口。
同样地,如果您可以通过安装时非常通用的格式创建类似博客的内容,那么可以将其包含在应用程序中,使用自己的模板,静态内容文件夹等,并配置一个django项目的实例以使用应用程式的内容
没有硬而快的规则说你必须这样做,但它是框架的目标之一。事实上,所有的模板都包含在内,可以让你从一些常见的基础中加入,这意味着你的博客应该适合任何其他的设置,只需通过查看自己的部分。
但是,为了解决您的实际问题,是的,没有任何表示您无法使用顶级项目文件夹。 That’s what apps do,你可以做到,如果你真的想。然而,我倾向于不是因为以下几个原因:

  • Django的默认设置不会这样做。
  • 通常,我想创建一个主应用程序,所以我创建一个,通常称为website。但是,稍后我可能想为此网站开发原始功能。为了使其可移动(无论我是否做过),我倾向于创建一个单独的目录。这也意味着我可以通过从配置中取消链接该包并删除该文件夹,而不是从全局urls.py文件夹中删除正确的URL来删除所述功能。
  • 很多时候,即使我想使自己独立的东西,它需要在某个地方生活,而我照顾它/使其独立。基本上面的这个例子,但是对于我的东西我打算做通用。
  • 我的顶级文件夹通常包含一些其他的东西,包括但不限于wsgi脚本,sql脚本等。
  • django的management extensions依赖于子目录。因此,适当地命名包是有意义的。

简而言之,有一个约定的原因与任何其他惯例是一样的 – 当涉及到与你的项目合作的其他人时,这是有帮助的。如果我看到fields.py,我马上期望其中的代码对django的字段进行子类化,而如果我看到inputtypes.py,我可能不会那么清楚,没有看到它。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Django: “projects” vs “apps”

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 77 = 78