我刚开始玩 Django/Python,并试图转换到 Django 要求的 MTV 编程模式(坚持)。到目前为止,决定哪些函数应该是模型的方法还是简单地成为视图中的函数一直令人困惑。有没有人知道一本书、网站、博客、幻灯片,无论是在更一般、更抽象的术语中讨论 Web 框架编程的东西吗?我想只有一本关于面向对象编程的书就可以做到,但我觉得那有点矫枉过正——我正在寻找一些特定于 Web 框架的东西。
6 回答
我在 Django 中的基本规则是:如果您可以想象需要视图本身以外的其他地方的功能,那么它不属于视图函数。
我还建议在Django Pluggables上下载一些过多的应用程序,看看他们是如何做到的。
一旦您找到了一些好的指南,请记住以下几点: Django 的术语有点特别。它使用“MTV”表示模型、模板和视图(还可以在某处提到 URL 调度程序),而更标准的一组术语是表示模型、视图和控制器的“MVC”。
模型在两种含义上都是相同的——一个数据实体的模型,通常链接到一个数据库表,如果框架实现了对象/关系映射(Django 就是这样做的)。
但是剩下的两个术语可能会令人困惑;在 Django 谈论视图的地方,“世界其他地方”谈论控制器。基本思想是,这是完成表示逻辑的地方。计算被计算,数组被排序,数据被检索,等等。我想说 Django 的 URL 调度器也是传统控制器概念的一部分。
Django 的模板可与其他地方的视图相媲美 - 在这里你有你的演示文稿,没有别的。在 Django 强制你使用非常小的逻辑命令集的地方,其他框架通常只是建议你除了呈现 HTML 和一些呈现逻辑元素(如循环、分支等)之外不要做任何事情,但不要阻止你做其他事情东西。
所以,回顾一下:
- 模型:数据对象
- 控制器(在 Django 中查看):数据处理
- 视图(Django 中的模板):演示文稿
哦,顺便说一句:对于特定于 Django 的指南,请考虑阅读The Django Book
我之前并没有真正愤怒地使用过 Django,但是在 Rails 和 CakePHP(以及任何 MVC Web 框架)中,组织方法的Fat Model、Skinny Controller方法让我大开眼界。
以下是一些可能有助于作为概述的链接。
根据我自己的经验,当我第一次开始使用基于 MVC 的 Web 框架时,我遇到的最大问题是模型。从我的手指中撬出 SQL 并让我使用 Objects 感觉很奇怪。一旦我开始将我的数据视为对象而不是 SELECT 语句,它就开始变得更容易了。
视图函数应该只包含显示助手或显示逻辑。视图函数不应该访问模型本身,而应该获取模型数据的参数。将模型与视图分开很重要。因此,如果函数处理访问数据库或数据库对象,它属于模型。如果函数处理格式化显示,它属于视图。
如果您不是绝对准备深入研究 Django 并且不介意尝试其他东西作为开始,您可能想试一试 WSGI ,它允许您使用第三方引擎以自己的方式模板化您的应用程序,而不是必须完全遵守 Django 的规则。这也使您可以窥视处理请求的较低级别,因此您可以更好地了解 Django 在幕后所做的事情。