Django世界里的项目和应用有什么区别?

q5iwbnjs  于 2023-01-27  发布在  Go
关注(0)|答案(4)|浏览(286)

我正在使用Django创建我的第一个真正的网站,但我仍然很难理解项目和应用程序之间的区别。例如,我的网站是一个体育新闻网站,其中包含文章,排名表和"赛程和结果"等部分。
我的问题是:

  • 这些部分中的每一个部分是否应该位于整个项目中的单独应用程序中?
  • 这种情况下的最佳做法是什么?
8ulbf1ek

8ulbf1ek1#

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

一个 app 指的是项目的一个子模块。它是独立的,不与项目中的其他应用程序纠缠在一起,因此,理论上,你可以把它捡起来,然后把它放到另一个项目中,而不需要任何修改。一个 app 通常有它自己的 * models.py *(实际上可能是空的)。你可以把它看作是一个独立的python模块。一个简单的项目可能只有一个app。
在你的例子中,project 就是整个网站,你可以把它组织成有一个 app 用于文章,一个 app 用于排名表,还有一个 app 用于固定装置和结果,如果它们需要相互交互,它们可以通过文档完备的公共类和访问方法来完成。
要记住的主要事情是“应用程序”之间的相互依赖程度。实际上,这都是一个“项目”,所以没有必要走得太远,但要记住两个应用程序是多么的相互依赖。如果你发现一个应用程序可以解决两个问题,那就把它们分成两个应用程序。如果你发现两个应用程序如此紧密地交织在一起,以至于你永远无法在没有另一个的情况下重用其中一个,那就把它们合并成一个应用程序。

jexiocij

jexiocij2#

让我们通过这个现实的例子来理解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

应用程序:

正是这些小组件共同组成了你的项目。它们是你项目的特征。在我们的例子中(购物网站),它将是:

  • Cart:-它将具有用户选择购买项目的逻辑。
    • 产品 *:-这将有一个逻辑的产品,该网站正在销售。
    • 配置文件 *:-将具有用户信息逻辑。
-----------------------------------------------------------
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/

每个应用程序都关注项目中一个逻辑部分。

sz81bmfz

sz81bmfz3#

理想情况下,* 你的项目应该由应用程序组成 *。这就是为什么当使用命令行时,你创建一个项目,然后向该项目添加应用程序。
Apps旨在为你的项目带来“模块化”,例如,如果你构建了一个articles app,“理想情况下”,你可以在你的体育新闻项目中使用它,并在一个新的项目中重复使用它,而这个新的项目需要对它的settings进行最小限度的修改或不进行修改--比如一个博客项目。
应用程序是一个可以重复使用的软件,你的项目只代表你的特定需求。
看看Django Project Structure,它可能会给予你一些组织Django项目的最佳实践的见解。
在Google上也有几篇可搜索的博客文章涉及此主题:

icnyk63a

icnyk63a4#

根据Django官方文档
项目与应用程序
项目和应用程序之间有何区别?应用程序是执行某些操作的Web应用程序,例如,博客系统、公共记录数据库或小型投票应用程序。项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以位于多个项目中。

相关问题