何时在Django项目结构中创建新应用程序?

时间:2017-05-27 02:13:43

标签: python django web-applications project-structure

我已经在stackoverflow(When to create a new app (with startapp) in Django?)上看到了其他问题,并阅读了有关该主题的一些幻灯片,但仍然对何时在Django项目中创建新应用程序感到困惑?我是从MEAN堆栈过来的,我是Django的新手。

如果我想创建一个具有以下四个主要功能的Web应用程序:

-Register

-Login

- 与其他用户

- 上传文件

这些是4个独立的应用程序,有自己的views.py,urls.py等吗?或者我创建1个应用程序并共享应用程序文件?

似乎' apps'在Django项目中被描述为可重用的模块,但这些功能只能在我的整个Web应用程序中使用一次,因此它们不可重复使用?

如果我想构建两个完全独立的网站,我是否要创建2个单独的Django项目或1个带有单独应用程序的项目,并重用注册等应用程序?

试图将我的结构放在前面。

以下是来自Django的民意调查教程:

  

项目与应用

     

项目和应用程序之间有什么区别?一个应用程序是一个Web   做某事的应用程序 - 例如,Weblog系统,数据库   公共记录或简单的民意调查应用。一个项目是一个集合   特定网站的配置和应用。项目可以包含   多个应用。一个应用程序可以在多个项目中。

我加粗的部分让我非常困惑如何构建以及何时分开应用程序。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

许多人在刚接触Django时会提出同样的问题。为了清楚我已经使用了django版本1.9和1.10所以如果你使用版本< = 1.8,一些概念可能会改变。

在django中,您可以为模块创建单独的应用程序,您需要经常在其他模块中使用它。您需要的所有四个功能都可以在一个应用程序中使用,但我们假设您希望您的聊天功能在许多应用程序中有用,以获得帮助和帮助。支持服务或创建聊天机器人(大多数人在不同来源的网站上使用聊天服务)在这种情况下,如果您对特定功能有多种用途,或者您希望提供某人将您的聊天服务与您的API一起使用,则最好创建单独的应用程序。现在,如果您谈论注册和登录功能,它可以在django内置模块django.contrib.auth中使用,因此您可以为它创建单个应用程序。 如果我们谈论upload files功能,它可以在你的聊天应用程序和其他人中使用,但不是为它创建单独的应用程序,你可以用相同的形式,视图和模型实现它,或者你可以创建另一个单独的python脚本,你当你想使用继承或你喜欢的方法时,可以随时调用视图或模型。