我正在尝试开始使用 Django,之前曾使用过 CakePHP,因此我的 MVC 背景由此而来。我知道 Django 的 MTV 架构略有不同,并且对整体模型文件没问题 - 我可以很好地处理一个文件中的多个类。
但我对如何处理 View 感到困惑(这与 MVC 中的 Controller 大致类似,对吗?)。我看到的示例只有一个 views.py
,它具有 index()
、view()
等方法。但是如果我有一群用户创建并拥有他们可以共享的小部件,例如,我想要为用户模型运行 view()
的 /users/view
,和 /widgets/view
为小部件模型运行 view()
。
我看不出有什么方法可以将它们分开,也不知道正确/传统/正确的方法是什么。我可能也无法理解 Django 的做事方式。我是否应该在 view.py
中包含 user_view
和 widget_view
的方法?这看起来很笨重。
或者我应该有包含 index()
和 view() 的
?我可以从 URL 路由中引用那些吗? Django 之类的东西一般是怎么做的?user_view.py
或什至 user/view.py
这最终可能与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/