84

我正在使用 Django 创建我的第一个真实网站,但我仍在努力理解项目和应用程序之间的差异。

例如,我的网站是一个体育新闻网站,其中包含文章、排名表和“赛程和结果”等部分,我的问题是这些部分中的每一个是否应该在整个项目中的单独应用程序中?在这种情况下,最佳做法是什么?

4

4 回答 4

118

项目是指整个应用程序及其所有部分。

应用程序是指项目的子模块。它是自给自足的,并且不会与项目中的其他应用程序交织在一起,因此理论上,您可以将其拿起并将其放入另一个项目中而无需任何修改。应用程序通常有自己的models.py(实际上可能是空的)。你可能会认为它是一个独立的 python 模块。一个简单的项目可能只有一个应用程序。

对于您的示例,该项目是整个网站。您可以构建它,以便有一个用于文章的应用程序、一个用于排名表的应用程序以及一个用于夹具和结果的应用程序。如果他们需要相互交互,他们可以通过文档齐全的公共类和访问器方法来实现。

要记住的主要事情是应用程序之间的这种相互依赖程度。在实践中,这都是一个项目,所以过火没有意义,但请记住两个应用程序是如何相互依赖的。如果您发现一个应用程序解决了两个问题,请将它们拆分为两个应用程序。如果您发现两个应用程序如此交织在一起,您永远无法重复使用其中一个应用程序,请将它们组合成一个应用程序。

于 2013-10-13T22:29:01.560 回答
52

让我们通过这个真实的例子来理解 Django 中的 Project 和 App:

假设你正在 Django 中构建一个在线购物网站(电子商务网站):

项目:

它只是您网站的名称。Django 将创建一个python 包并给它一个您提供的名称。假设我们将其命名为 my_shopping_site

您可以使用此命令在 Django 中创建项目

python manage.py startproject my_shopping_site

这将my_shopping_site在您的工作目录中创建目录,结构将如下所示:

my_shopping_site/
   manage.py
   my_shopping_site/    # package
        __init__.py     # indication of package
        settings.py     # module 1
        urls.py         # module 2
        wsgi.py         # module 3

应用:

正是这些小组件共同构成了您的项目。它们是您项目的功能。在我们的案例(购物网站)中,它将是:

  • 购物车:- 这将有一个用户选择购买项目的逻辑。

  • 产品:- 这对网站销售的产品有一个逻辑。

  • 配置文件:- 这将具有用户信息的逻辑。

    -----------------------------------------------------------
    my_shopping_site              Products     Profile     Cart
    -----------------------------------------------------------
    

您可以使用以下命令创建这些应用程序:

python manage.py startapp cart
python manage.py startapp products
python manage.py startapp profile

结构如下所示:

my_shopping_site/   # project name
      manage.py
      products/          # app 1
      cart/              # app 2 
      profile/           # app 3
      my_shopping_site/

每个应用程序都专注于项目的一个逻辑部分。

于 2019-02-02T06:10:18.673 回答
18

理想情况下,您的项目应该由 apps 组成。这就是为什么在使用命令行时,您创建一个项目,然后将应用程序添加到该项目。

应用程序,旨在为您的项目带来模块化。例如,如果您构建一个articles app理想情况下,您可以在您的体育新闻项目中使用它,并在一个需要它的新项目中重新使用它,而对它的修改最少或不需要修改settings——例如博客项目。

应用程序是可以重复使用的软件。您的项目仅代表您非常具体的需求。

看看Django 项目结构。它可能会让您对组织 Django 项目的最佳实践有所了解。

在 Google 上也有几篇可搜索的博客文章讨论了这个主题:

于 2013-10-13T22:21:04.097 回答
1

根据官方 Django 文档

项目与应用

项目和应用程序有什么区别?应用程序是做某事的 Web 应用程序——例如,Weblog 系统、公共记录数据库或小型投票应用程序。项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。

于 2021-03-05T07:41:54.297 回答