Python 什么&x2019;Django world中的项目和应用程序有什么区别?

Python 什么&x2019;Django world中的项目和应用程序有什么区别?,python,django,Python,Django,我正在使用Django创建我的第一个真正的网站,但我仍然在努力理解项目和应用程序之间的区别 例如,我的网站是一个体育新闻网站,其中将包含文章、排名表和“装置和结果”等部分,我的问题是,这些部分中的每一部分是否应在整个项目中的单独应用程序中?这种情况下的最佳实践是什么?理想情况下,您的项目应该由应用程序组成。这就是为什么在使用命令行时,您会创建一个项目,稍后再向该项目添加应用程序 应用程序,旨在为您的项目带来模块化。例如,如果您构建了一个文章应用程序,理想情况下,您可以在体育新闻项目中使用它,并在

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

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

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

应用程序,旨在为您的项目带来模块化。例如,如果您构建了一个
文章应用程序
,理想情况下,您可以在体育新闻项目中使用它,并在一个新项目中重新使用它,该项目需要对其
设置进行最少的修改或不进行任何修改,例如博客项目

应用程序是一种可以重复使用的软件。您的项目仅代表您的特定需求

看一看。它可能会让您了解组织Django项目的最佳实践

谷歌上也有几篇博客文章可以搜索到这一主题:

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

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

例如,该项目就是整个网站。你可以把它组织成一个文章应用程序,一个排名表应用程序,以及一个固定装置和结果应用程序。如果它们需要相互交互,则可以通过有良好文档记录的公共类和访问器方法来实现


要记住的主要一点是应用程序之间的相互依赖程度。实际上,这都是一个项目,所以没有必要过火,但请记住这两个应用程序是多么相互依赖。如果您发现一个应用程序解决了两个问题,请将它们拆分为两个应用程序。如果您发现两个应用程序相互交织,无法在没有其他应用程序的情况下重复使用,请将它们组合成一个应用程序。

让我们通过这个现实的示例来了解Django中的项目和应用程序:

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

项目:

它只是你网站的名字。Django将创建一个,并给它一个您提供的名称。让我们把它命名为我的购物网站

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

python manage.py startproject my_shopping_site
这将在您的工作目录中创建
my\u shopping\u 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/   # project name
      manage.py
      products/          # app 1
      cart/              # app 2 
      profile/           # app 3
      my_shopping_site/
应用程序:

这些小组件共同构成了您的项目。它们是项目的特征。在我们的情况下(购物网站),它将是:

  • 购物车:-这将为用户选择的购物项目提供逻辑

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

  • 配置文件:-其中包含用户信息的逻辑

    -----------------------------------------------------------
    my_shopping_site              Products     Profile     Cart
    -----------------------------------------------------------
    
您可以使用以下命令创建这些应用程序:

python manage.py startapp cart
python manage.py startapp products
python manage.py startapp profile
结构如下所示:

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/   # project name
      manage.py
      products/          # app 1
      cart/              # app 2 
      profile/           # app 3
      my_shopping_site/

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

根据Django官方文件

项目与应用程序

项目和应用程序之间有什么区别?应用程序就是一个网络 执行某些操作的应用程序—例如,网络日志系统、数据库 公共记录或小型民意测验应用程序。项目是一组 特定网站的配置和应用程序。项目可以包含 多个应用程序。一个应用程序可以位于多个项目中


有许多方法可以用来组织项目。但应用程序通常是项目的半封闭部分。例如,首页上的民意测验应用程序。但是,在您的情况下,文章可能包含评论,这些评论,取决于您的结构,可能只包含在文章应用程序中。没有金子弹。如果你想重用它,那就换一个单独的应用程序,否则就要看情况了。另请参见:这里是django文档的链接:django项目结构链接已失效。你知道它去哪儿了吗?@dsjoerg谢谢你让我知道。刚刚更新了答案。很好@Ahtisham@Ahtisham最初创建的my_shopping_网站也算作应用程序吗?比如说,当startproject运行时,在自动创建的目录中开始编写应用程序是一种好习惯吗?应用程序可以相互依赖,但它们应该做一件事。