gpt4 book ai didi

python - Django 和 MVC(MVT) 布局

转载 作者:太空狗 更新时间:2023-10-30 00:30:30 24 4
gpt4 key购买 nike

我以前使用过其他基于 MVC 的框架,现在开始使用 Django,这对我过去的习惯来说似乎有点尴尬。例如,在其他基于 MVC 的框架中。我的布局可能是这样的:

root:
- config (houses the config files (like settings), url.conf, db connections, etc.)
- controllers (houses the main logic of each section of the site. The middle ground between views and models)
- models (handles all the data to be validated and anything that interacts with the database. declares the DB structure. each model a class, each attribute a db field. in django, a template?)
- views (the html displayed to the end user, put together by the controllers)
- tests (all the tests)
- plugins (3rd party apps you install into yours.)
- uploads (user uploaded files)
- public_html (the actual public facing files)
-\ css|js|img (the various static file types for page manipulation)
-\ index.html

我以前就是这样,而且 django 做事的方式似乎大不相同。以前如果我有一个民意测验应用程序我会:

controllers/PollController.py
models/Poll.py
views/poll/index.py

这将在数据库中创建轮询表。但是在 Django 中,我该怎么做呢?这是一个可以接受的布局吗?根据我的阅读,上面的内容更像是这样:

root:
- project (this would be the main app, and what glues everything together)
--/ settings.py
--/ urls.py
--/ templates/

- apps
-/ Poll
--/ models.py (i would have no Poll.py model, so it would all go in here)
--/ urls.py (any url.conf specific to this model would go in here)
--/ templates/ (the various views for this app)

虽然这在某些方面确实有道理,但对我来说却很陌生。与第一个示例中描述的传统 mvc 布局相比,这种类型的布局有什么好处吗?除此之外还有其他首选布局吗?这个“项目”的目的是核心将是一个供我自己使用的基本框架,我有几个不同的“应用程序”,我将为这个框架的每次使用创建。在旧版本中,每个应用程序都只是通过作为该目录中的插件来扩展主应用程序。

作为背景说明,我的大部分经验都是在 php 和那个世界的各种框架(cakephp、yii,主要是)方面,如果这有所不同的话。这将是我在 python/django 中的第一个主要项目。我只想做对。

最佳答案

最大的好处是应用程序是模块化的。您可以通过删除一个目录来移除您的 Poll 应用程序,而不是遍历多个目录来逐一删除。另一方面,如果您在某处找到了一个您想使用的 Poll 应用程序,则只需将其放入一个文件夹即可。

如果您认为网站是几个独立且大部分不同的“应用程序”的集合体,并通过某种胶水将它们结合在一起,那么这种组织方式就更有意义了。

关于python - Django 和 MVC(MVT) 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6822550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com