我真的在努力应对整个应用程序的想法。我阅读了很多教程和样式指南,我知道我应该尝试创建专门的应用程序,这只做一件事。在查看一些简单的教程项目时,这一切都很有意义,但一旦进入复杂的现实生活项目,我发现自己无法确定应该如何划分不同应用程序之间的界限。
其中一个问题是,我希望有一个网站(或多个网站),用户可以看到很多不同的东西。遵循应用程序设计规则时应该来自不同应用程序的东西。我怎么会意识到这样的事情?我的第一个想法是创建一个名为ui
的应用程序,它只处理实际导致模板的所有视图,所有其他应用程序提供模型和辅助功能。但我担心ui
应用程序会变得很大。
举个小例子:让我想拥有一个用户可以执行以下任务的网站:
现在,我会创建三个应用程序:
但是,我需要某种main
或ui
应用来处理这些应用如何互动以及创建实际网站,其中所有应用都以某种方式参与其中。
那么,有没有“正确”的方法来做到这一点?或者我可以使用任何模式吗?我也很欣赏有关这个主题的良好资源的链接,尽管我已经阅读了不少内容。
答案 0 :(得分:11)
您只需要确保您的结构对您有意义。
不需要为绑定到项目逻辑的另一部分的每个功能创建新的应用程序。
可重用的应用程序是一个完全不同的故事,它们的代码应该在某种程度上不了解实现。
查看Django's structure获取灵感
您的示例的可能布局:
project_root/
project/
__init__.py
settings.py
urls.py
templates/
app1/ # override stuff
static/
media/
app1/
__init__.py
admin/ # as a package
__init__.py
subjects.py
resources.py
# etc
models/ # as a package
subjects.py
resources.py
# etc
managers/
__init__.py
subjects.py
resources.py
# etc
services/
__init__.py
audio.py # upload handler etc
views/
__init__.py
subjects.py
urls/
__init__.py
subjects.py
templates/
app1/
subject_list.html # override at project level
static/
app1/
css/
subject.css # override at project level
app2/
__init__.py
models.py # holds a Member model or whatever you require
manage.py
答案 1 :(得分:7)
我认为划分应用程序的最佳方法大致相当于在Objected Oriented Programming Language上划分类的方式。您可以分别考虑模型和视图,而不是变量和方法:
模型是对象的状态,视图用于查看对象的状态并与之交互。
我的经验法则是,创建应用程序是否有助于encapsulate一组特定的模型?如果是这种情况,那么我尝试创建它。