python - 将思维从 CakePHP 转移到 Django - 一个单一的 View 文件?

标签 python django model-view-controller django-views

我正在尝试开始使用 Django,之前曾使用过 CakePHP,因此我的 MVC 背景由此而来。我知道 Django 的 MTV 架构略有不同,并且对整体模型文件没问题 - 我可以很好地处理一个文件中的多个类。

但我对如何处理 View 感到困惑(这与 MVC 中的 Controller 大致类似,对吗?)。我看到的示例只有一个 views.py,它具有 index()view() 等方法。但是如果我有一群用户创建并拥有他们可以共享的小部件,例如,我想要为用户模型运行 view()/users/view ,和 /widgets/view 为小部件模型运行 view()

我看不出有什么方法可以将它们分开,也不知道正确/传统/正确的方法是什么。我可能也无法理解 Django 的做事方式。我是否应该在 view.py 中包含 user_viewwidget_view 的方法?这看起来很笨重。

或者我应该有包含 index()view() 的 user_view.py 或什至 user/view.py ?我可以从 URL 路由中引用那些吗? Django 之类的东西一般是怎么做的?

这最终可能与this answer相关(甚至解决) ,但我问的更多是关于思考此类事情的惯例和正确方法的问题。

此外,文档/示例不应该对此更清楚吗?到目前为止,这些文档给我留下了深刻的印象,但我很确定大多数 Web 应用程序都会处理不止一个“对象”,而且在我看来这种情况会经常出现。

最佳答案

Python View 文件只是 Python 模块。 View 本身只是可以存在于您喜欢的任何地方的函数——甚至不必将模块称为 views.py。 urlconf(在 urls.py 中)可以在任何地方引用 View 。

分离事物的一个明显方法是将其分离到单独的应用程序中,这在文档中有很好的介绍 - 您还可以为每个应用程序创建单独的 urls.py 文件,并在主站点中使用 include -级别 urls.py 以包含所有子文件。

但是没有什么可以阻止您将单个应用程序中的 View 分割为多个文件 - 例如通过创建一个 views 模块,其中包含一个(空白)__init__.py 以及您喜欢的任意数量的其他 View 文件。

或者,如果您确实拥有只与特定模型相关联的 View ——您会惊讶于这种情况很少见——同样,您可以在模型类本身上创建 View 类方法。 View 所要做的就是接受请求和任何其他参数,然后返回响应。

关于python - 将思维从 CakePHP 转移到 Django - 一个单一的 View 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3443157/

相关文章:

python - 如何在 SPARQL 查询中预定义变量

python - 使用 Python 将所有列表元素转换为字符串?

Django SSL 证书和静态媒体

python - 无法从 Python/Django 中的字典中获取值(电子邮件)

python - WSGI 作为 AuthFormProvider

iphone - 在 Objective-C 中创建对象数组。

python - Bellman-Ford算法的python实现

python - 提取 Pylint 分数

java - MVC,其中模型没有内在的视觉表示

java - 在 Swing 中为 MVC 模型使用撤消/重做?