【发布时间】:2013-10-28 11:51:01
【问题描述】:
我正在尝试在 JetBrains PyCharm IDE 中创建一个新的 Django/Python 项目。 但是,在输入我的软件名称时,它会告诉我
“你不能像你的项目一样调用你的应用程序”。
为了完全理解 Django 中项目和应用程序之间的区别,我希望有人能够为一些已知的复合网站(如 Facebook、Gmail 和 YouTube)演示应用程序和项目之间的区别。
【问题讨论】:
我正在尝试在 JetBrains PyCharm IDE 中创建一个新的 Django/Python 项目。 但是,在输入我的软件名称时,它会告诉我
“你不能像你的项目一样调用你的应用程序”。
为了完全理解 Django 中项目和应用程序之间的区别,我希望有人能够为一些已知的复合网站(如 Facebook、Gmail 和 YouTube)演示应用程序和项目之间的区别。
【问题讨论】:
我对 Facebook 的尝试:
facebook
users
messages
notifications
posts
...
基本上,应用程序代表整个项目的特定部分。此外,该应用程序可以“插入”到类似的项目中。为了可维护,应用应该有自己的目标,不同于其他应用的目标。
在优秀的“Two Scoops of Django”book 中,作者引用了 James Bennett:
创建和维护一个好的 Django 应用程序的艺术在于它 根据道格拉斯,应该遵循截断的 Unix 哲学 麦克罗伊:“编写只做一件事并做好的程序”。
作者再次声明:
从本质上讲,每个应用都应该专注于自己的任务。如果一个应用 不能用一个中等长度的句子来解释,或者你 需要说“和”不止一次,这可能意味着应用程序太大 应该分手。
2014 年 19 月 12 日更新:
使用 Django 1.7 this description of "Projects and applications" 绝对值得一读。
21/12/2017 更新:
Django 1.10 链接here.
【讨论】:
来自文档中的教程:
项目与应用 项目和应用程序有什么区别?应用程序是做某事的 Web 应用程序——例如,Weblog 系统、公共记录数据库或简单的投票应用程序。项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用可以在多个项目中。
https://docs.djangoproject.com/en/dev/intro/tutorial01/#creating-models
如果您将其与 youtube 进行比较,整个 youtube 网站可能是一个大项目,其功能分为视频搜索、消息传递、个人资料/频道创建等应用程序...如果结构更简单,您可以将不同的部分保留在一个地方,这取决于你。我更喜欢只开始在路上分解东西。
【讨论】:
在official Django documentation:
1) 应用程序是做某事的 Web 应用程序,例如,博客系统
2) 项目是特定网站的配置和应用程序的集合
3) 一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。
【讨论】:
应用程序可以是任何可以在网站上执行某些特定任务的东西。例如:银行域 -> 贷款申请、信用卡/借记卡申请等
项目是特定网站的应用程序集合。例如:银行软件、Gmail、Facebook 等。
参考:https://consideratecode.com/2017/12/29/django-app-project-site/
【讨论】: