我已经在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系统,数据库 公共记录或简单的民意调查应用。一个项目是一个集合 特定网站的配置和应用。项目可以包含 多个应用。一个应用程序可以在多个项目中。
我加粗的部分让我非常困惑如何构建以及何时分开应用程序。
感谢任何帮助。
答案 0 :(得分:2)
许多人在刚接触Django时会提出同样的问题。为了清楚我已经使用了django版本1.9和1.10所以如果你使用版本< = 1.8,一些概念可能会改变。
在django中,您可以为模块创建单独的应用程序,您需要经常在其他模块中使用它。您需要的所有四个功能都可以在一个应用程序中使用,但我们假设您希望您的聊天功能在许多应用程序中有用,以获得帮助和帮助。支持服务或创建聊天机器人(大多数人在不同来源的网站上使用聊天服务)在这种情况下,如果您对特定功能有多种用途,或者您希望提供某人将您的聊天服务与您的API一起使用,则最好创建单独的应用程序。现在,如果您谈论注册和登录功能,它可以在django内置模块django.contrib.auth中使用,因此您可以为它创建单个应用程序。 如果我们谈论upload files功能,它可以在你的聊天应用程序和其他人中使用,但不是为它创建单独的应用程序,你可以用相同的形式,视图和模型实现它,或者你可以创建另一个单独的python脚本,你当你想使用继承或你喜欢的方法时,可以随时调用视图或模型。