Python核心编程(第3版)
第2 部分 Web开发

第11章 Web框架:Django

章节主张:Django 章是在训练“把一个脚本升级为产品”的能力:模型、后台、模板、URL、视图和表单共同构成一个闭环。

中文释读:本章最值得学的不是具体 API,而是把博客示例当作一个最小产品:数据如何进系统、如何被展示、如何被管理、如何迭代扩展。

章节知识路线

  1. 11.1 简介
  2. 11.2 Web框架
  3. 11.3 Django简介
  4. 11.4 项目和应用
  5. 11.5 “Hello World”应用(一个博客)

关键论点

  • 模型层决定系统骨架。
  • 后台和表单极大提高内部工具成型速度。
  • 中级案例说明框架的价值在组织复杂度。

行动清单

  • 先定义实体和用户动作。
  • 让模板、路由、视图围绕页面任务协同。
  • 对关键路径加最小测试。

源章节深读

11.1 简介

解决的问题:这一节解决的是“11.1 简介在真实应用里到底扮演什么角色”。

把 11.1 简介 放回本章上下文,它更像是 结构化数据交换与系统边界 的一个具体落点。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 11.1 简介 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

11.2 Web框架

解决的问题:这一节解决的是“11.2 Web框架在真实应用里到底扮演什么角色”。

第 11 章 Web 框架:Django 385 11.1 简介 本章不再介绍 Python 标准库,而介绍一个著名的 Web 框架:Django。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 11.2 Web框架 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

第 11 章 Web 框架:Django 385 11.1 简介 本章不再介绍 Python 标准库,而介绍一个著名的 Web 框架:Django。 首先简要介 绍什么是 Web 框架,接着介绍使用 Django 开发应用。 从基础开始介绍 Django,并开发 一个“Hello World”应用。

11.3 Django简介

解决的问题:这一节解决的是“11.3 Django简介在真实应用里到底扮演什么角色”。

386 第 2 部分 Web 开发 TurboGears 为例,这是一个非常优秀的全栈系统,由分散在全世界的开发者开发,其作为胶 水代码,将栈中其他独立的组件组合起来,如 ToscaWidgets(高级 Web 部件,它可利用多种 JavaScript 框架,如 Ex1tJs、jQuery 等)、SQLAlchemy(ORM)、Pylons(Web 服务器),还有 Genshi(模板化)。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 11.3 Django简介 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

386 第 2 部分 Web 开发 TurboGears 为例,这是一个非常优秀的全栈系统,由分散在全世界的开发者开发,其作为胶 水代码,将栈中其他独立的组件组合起来,如 ToscaWidgets(高级 Web 部件,它可利用多种 JavaScript 框架,如 Ex1tJs、jQuery 等)、SQLAlchemy(ORM)、Pylons(Web 服务器),还有 Genshi(模板化)。 遵循这种架构样式的框架能提供很好的灵活性,用户可以选择不同的模板 系统、JS 库、生成原始 SQL 语句的工具,以及不同的 Web 服务器。 只须牺牲一点一致性和 放弃单一工具的追求。

11.4 项目和应用

解决的问题:这一节解决的是“11.4 项目和应用在真实应用里到底扮演什么角色”。

390 第 2 部分 Web 开发 对于 Linux 用户,COMMAND 是对应发行版的包管理器,如 apt-get、yum、aptitude 等。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 11.4 项目和应用 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

390 第 2 部分 Web 开发 对于 Linux 用户,COMMAND 是对应发行版的包管理器,如 apt-get、yum、aptitude 等。 可以从 http://docs.djangoproject.com/en/dev/ misc/distributions 中找到不同发行版的安 装指导。 除了上面提到的方法之外,还可以从 Django 网站直接下载并安装原始发布的压缩包。

11.5 “Hello World”应用(一个博客)

解决的问题:这一节解决的是“11.5 “Hello World”应用(一个博客)在真实应用里到底扮演什么角色”。

394 第 2 部分 Web 开发 [11/Dec/2010 14:15:51] "GET / HTTP/1.1" 200 2051 图 11-3 Django 初始的“It worked!”页面 日志的每一行含有 4 个部分,从左到右,依次是时间戳、请求、HTTP 响应编码,以及 字节数(读者可能有不同的字节数) 。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 11.5 “Hello World”应用(一个博客) 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

394 第 2 部分 Web 开发 [11/Dec/2010 14:15:51] "GET / HTTP/1.1" 200 2051 图 11-3 Django 初始的“It worked!”页面 日志的每一行含有 4 个部分,从左到右,依次是时间戳、请求、HTTP 响应编码,以及 字节数(读者可能有不同的字节数) 。 ”页面很友好地告诉用户开发服务器正在工 作,现在可以创建应用了。 如果服务器没有正常工作,检查前面的步骤。

11.6 创建模型来添加数据库服务

解决的问题:这一节解决的是“11.6 创建模型来添加数据库服务在真实应用里到底扮演什么角色”。

396 第 2 部分 Web 开发 虽然结尾的逗号不是必需的,但如果今后向该元组中添加其他项,就无须添加逗号。

怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。

提醒:最常见的问题是只记住 11.6 创建模型来添加数据库服务 的 API 或步骤,却没搞清它的上下游依赖与边界条件。

原文线索

396 第 2 部分 Web 开发 虽然结尾的逗号不是必需的,但如果今后向该元组中添加其他项,就无须添加逗号。 Django 使用 INSTALLED_APPS 来配置系统的不同部分,包括自动管理应用程序和测试框架。 11.6 创建模型来添加数据库服务 现在接触到了基于 Django 的博客系统的核心:models.py 文件。

辨别题

为什么很多人学完 Django 还不会做自己的业务应用?

本章图版学习路径

11.1 简介

Django UI 与路由