【问题标题】:Web framework programming mindset [closed]Web框架编程心态[关闭]
【发布时间】:2010-09-06 12:54:44
【问题描述】:

我刚刚开始使用 Django/Python,并试图转换到 Django 要求(坚持)的 MTV 编程模式。到目前为止,决定哪些函数应该是模型的方法还是简单地成为视图中的函数一直令人困惑。有谁知道一本书、网站、博客、幻灯片,无论是用更一般、更抽象的术语讨论 Web 框架编程的东西吗?我想只要一本关于面向对象编程的书就可以了,但我觉得那有点矫枉过正——我正在寻找一些特定于 Web 框架的东西。

【问题讨论】:

    标签: frameworks object


    【解决方案1】:

    我在 Django 中的基本规则是:如果您可以想象到需要视图本身以外的其他地方的功能,那么它不属于视图函数。

    我还建议在Django Pluggables 上下载一些过多的应用程序,看看他们是如何做到的。

    【讨论】:

      【解决方案2】:

      一旦您找到了一些好的指南,请记住以下几点:Django 的术语有点特别。它使用“MTV”表示模型、模板和视图(并且还可以在某处提到 URL Dispatcher),而更标准的一组术语是表示模型、视图和控制器的“MVC”。

      Model 在两种含义上都是相同的——一个数据实体的模型,通常链接到一个数据库表,如果框架实现了对象/关系映射(Django 就是这样做的)。

      但是剩下的两个术语可能会令人困惑;在 Django 谈论视图的地方,“世界其他地方”谈论控制器。基本思想是,这是完成表示逻辑的地方。计算计算、数组排序、数据检索等等。我想说 Django 的 URL 调度器也是传统 Controller 概念的一部分。

      Django 的模板可与其他地方的视图相媲美 - 在这里你有你的演示文稿,没有别的。在 Django 强制你使用非常小的逻辑命令集的地方,其他框架通常只是建议你除了呈现 HTML 和一些呈现逻辑元素(如循环、分支等)之外不要做任何事情,但不要阻止你做其他事情东西。

      所以,回顾一下:

      • 模型:数据对象
      • 控制器(在 Django 中查看): 数据处理
      • 视图(Django 中的模板): 演示文稿

      哦,顺便说一句:有关 Django 特定指南,请考虑阅读 The Django Book

      【讨论】:

        【解决方案3】:

        我之前并没有真正使用过 Django,但在 Rails 和 CakePHP(以及任何 MVC Web 框架)中,Fat Model, Skinny Controller 组织方法的方法让我大开眼界。

        【讨论】:

          【解决方案4】:

          如果您没有完全准备好深入研究 Django,并且不介意尝试其他东西作为开始,您可能想试一试 WSGI,它允许您使用 @ 以您自己的方式模板化您的应用程序987654322@,而不必完全遵守 Django 的规则。这也使您可以窥视处理请求的较低级别,因此您可以更好地了解 Django 在幕后所做的工作。

          【讨论】:

            【解决方案5】:

            这里有一些链接可能有助于作为概述。

            根据我自己的经验,当我第一次开始使用基于 MVC 的 Web 框架时,我遇到的最大问题是模型。从我的手指中撬出 SQL 并让我使用 Objects 感觉很奇怪。一旦我开始将我的数据视为对象而不是 SELECT 语句,它就开始变得更容易了。

            【讨论】:

              【解决方案6】:

              视图函数应该只包含显示助手或显示逻辑。视图函数不应该访问模型本身,而应该获取模型数据的参数。将模型与视图分开很重要。因此,如果函数处理访问数据库或数据库对象,它属于模型。如果函数处理格式化显示,它就属于视图。

              【讨论】:

                猜你喜欢
                • 2012-09-28
                • 2022-01-23
                • 1970-01-01
                • 1970-01-01
                • 2015-09-26
                • 2017-01-04
                • 2012-07-30
                • 2010-09-05
                • 1970-01-01
                相关资源
                最近更新 更多