【问题标题】:What exactly are Django Apps什么是 Django 应用程序
【发布时间】:2011-09-01 20:18:31
【问题描述】:

我想从 Rails 切换到 Django,以拓宽我的视野,一个问题浮现在我的脑海。

我的 Rails 应用程序一团糟,因为我的基于爱好的开发方法是一种修补和粘合的方法。我很早就看到 Django 在项目和应用程序之间划分。根据他们的网站,一个项目由多个应用组成,一个应用可以用于多个项目。

这引起了我的兴趣,因为这会使我的网站区域之间的界限更加清晰。我试图找到更多的例子和信息,但我无法回答我的问题,即:

这样的应用程序有多大/多小?他们是否能够/应该密切互动?

例如,让一个应用程序处理用户的个人资料,而另一个应用程序处理来自这些用户的博客帖子和 cmets 是否明智? (在我的站点中,一个用户可以拥有多个博客,具有不同的个人资料)。或者它们是否打算用于其他用途?

【问题讨论】:

    标签: python django django-apps


    【解决方案1】:

    django App 是 python 包 的花哨名称。真的,就是这样。将 django 应用程序与其他 python 包区分开来的唯一一点是,它出现在 settings.pyINSTALLED_APPS 列表中是有意义的,因为它包含模板、模型或其他可以自动执行的功能。由其他 django 功能发现。

    一个好的 django 应用程序只会做一件事,做得很好,并且不会与可能使用它的任何其他应用程序紧密耦合。 django 在 contrib 命名空间中提供了各种遵循此约定的应用程序。

    在您的示例中,设计应用程序的一种好方法是为用户配置文件(或使用许多现有配置文件应用程序之一)、一个用于博客文章的应用程序(或已经这样做的众多应用程序之一)、一个用于 cmets 的应用程序,与博客文章分开(同样,您可以为此使用现有的应用程序),最后是一个非常小的应用程序,将三者联系在一起,因为它们不也不应该直接相互依赖。

    【讨论】:

    • 我经常想知道的一件事是......如果我正在创建一堆模型,并且想要创建自己的管理站点(而不是重用现有站点),拥有一个公共站点,并且有一个 api,我应该将模型创建为一个应用程序,而将其他模型创建为单个应用程序吗?那么我可以在其他人之间共享模型应用程序,并在需要时从不同的主机上为它们提供服务?
    【解决方案2】:

    使用应用程序的目的是使它们可重复使用。 Django 喜欢DRY principle DRY 代表DO NOT repeat yourself

    应用程序应该尽可能小,并且松耦合。所以,对于一个应用来说,不应该需要另一个应用才能正常工作。

    Django 建议为每个表编写一个应用程序(嗯,并非总是如此,但是一旦你想扩展你的应用程序,你肯定需要划分表来配对应用程序。否则你将很难维护你的代码.)

    例如,您可以为用户创建应用程序、为销售创建应用程序、为 cmets 创建应用程序、为文章创建应用程序。维护您的代码会更容易,如果您做得对,您可以在其他 project 中使用该应用程序,只需在应用程序中进行一些(如果有的话)修改。

    Projectapp 的汇编。用户应用程序、文章应用程序、cmets 应用程序可以组合成一个项目,或者换句话说,一个网站。

    如果你想学习django,我建议你去看看:

    http://www.djangobook.com/

    http://docs.djangoproject.com/


    忠告,不要,无论如何,复制/粘贴。不仅您的代码很有可能失败,而且您将不知道代码在做什么。如果你打算在你的项目中使用别人的代码,至少键入它们,这会让你明白代码在做什么,或者至少,它会给出一个想法。

    编写自己的代码总是更好的维护,但这并不意味着您应该重新发明世界,您可以使用库,查看它们的文档以正确使用它。

    文档、教程是你最好的朋友。

    祝你好运。

    【讨论】:

      【解决方案3】:

      项目基本上是您的项目所在的地方...在您的项目中设置您的网址、项目设置等。

      应用定义自己的数据模型和视图以在项目中使用。如果愿意,您可以在项目之间移动它们。

      我强烈建议您通过 Django 网站上的tutorials 运行,因为它们会向您展示项目和应用程序是什么,如何管理两者,如何使用管理面板,如何使应用程序在多个项目中可用,等等

      【讨论】:

        【解决方案4】:

        一个门户 = 一个 django 项目

        广告系统、图库照片、产品目录 = 应用程序

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-12-29
          • 2014-08-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多