深入理解Django:框架内幕与实现原理

作者
沈聪
丛书名
出版社
电子工业出版社
ISBN
9787121421884
简要
简介
内容简介书籍计算机书籍 全书共分为8 章,分别是Django 源码的前置知识、 Django 命令原理解析、Django 内置的ORM框架、Django 内置的模板系统、解读Django 核心模块的源码、Django 的视图层、Django 的中间件原理和解读Django 中的辅助代码。本书展示了剖析Django 框架的完整过程,这种剖析方式同样适用于其他框架,如Flask、Ansible 和Scrapy 等。
目录
第1 章 Django 源码的前置知识 ........................................ 1
1.1 在学习Django 源码前,该做什么 ........................................ 1
1.1.1 Django 的版本选择 ........................................ 1
1.1.2 Django 源码学习基础 ........................................ 2
1.2 搭建Django 的调试环境和测试环境 ........................................ 3
1.2.1 调试django-admin 命令 ........................................ 3
1.2.2 调试manage.py 命令 ........................................ 8
1.2.3 调试框架源码 ........................................ 11
1.2.4 搭建Django 的测试环境 ........................................ 15
1.3 学习Django 源码的建议 ........................................ 17
1.4 小结 ........................................ 18
第2 章 Django 命令原理解析 ........................................ 19
2.1 基础方法介绍 ........................................ 19
2.1.1 find_commands()函数 ........................................ 19
2.1.2 load_command_class()函数 ........................................ 20
2.1.3 get_commands()函数 ........................................ 20
2.1.4 call_command()函数 ........................................ 21
2.2 startproject 命令的实现原理 ........................................ 24
2.3 shell 命令的实现原理 ........................................ 33
2.4 makemigrations 命令的实现原理 ........................................ 45
2.4.1 makemigrations 命令的基本操作示例 ........................................ 45
2.4.2 迁移相关的基础类与方法 ........................................ 47
2.4.3 追踪makemigrations 命令 ........................................ 69
2.5 migrate 命令的实现原理 ........................................ 78
2.6 小结 ........................................ 90
第3 章 Django 内置的ORM 框架 ........................................ 91
3.1 读取Django 项目的配置信息 ........................................ 91
3.1.1 Settings 类 ........................................ 92
3.1.2 LazySettings 类 ........................................ 94
3.2 ORM 框架的底层核心 ........................................ 97
3.2.1 mysqlclient 模块中的常用方法 ........................................ 97
3.2.2 ORM 框架的源码解析 ........................................ 98
3.2.3 DatabaseWrapper 类的实战案例 ........................................ 108
3.3 Django 中数据库操作背后的原理........................................ 116
3.3.1 在Django 中执行原生SQL 语句 ........................................ 117
3.3.2 ORM 框架的基本操作 ........................................ 118
3.3.3 答疑解惑 ........................................ 160
3.3.4 ORM 框架的聚合操作 ........................................ 162
3.4 ORM 框架的部分源码解读 ........................................ 176
3.5 小结 ........................................ 205
第4 章 Django 内置的模板系统 ........................................ 206
4.1 Django 内置的模板语法 ........................................ 206
4.1.1 for 标签 ........................................ 207
4.1.2 if 标签 ........................................ 211
4.1.3 csrf_token 标签 ........................................ 212
4.1.4 with 标签 ........................................ 212
4.1.5 cycle 标签 ........................................ 213
4.1.6 include 标签 ........................................ 214
4.1.7 过滤器标签 ........................................ 215
4.2 Django 内置模板引擎源码解读 ........................................ 216
4.2.1 get_template()方法的源码解析 ........................................ 216
4.2.2 _engine_list()方法的源码解析........................................ 216
4.2.3 EngineHandler 类的源码解析 ........................................ 217
4.2.4 DjangoTemplates 类的源码解析 ........................................ 221
4.3 答疑解惑 ........................................ 283
4.4 Jinja2 模块封装过程解析 ........................................ 299
4.5 小结 ........................................ 303
第5 章 解读Django 核心模块的源码 ........................................ 304
5.1 core 源码一览 ........................................ 304
5.2 请求处理 ........................................ 305
5.3 缓存模块 ........................................ 316
5.4 检查模块 ........................................ 330
5.4.1 messages.py 文件的源码解析 ........................................ 330
5.4.2 registry.py 文件的源码解析 ........................................ 333
5.5 序列化 ........................................ 348
5.5.1 serialize()方法的源码解析 ........................................ 349
5.5.2 JSON 序列化器的底层逻辑 ........................................ 359
5.5.3 简单分析Python 序列化器的输出结果 ........................................ 366
5.6 文件模块 ........................................ 367
5.6.1 uploadedfile.py 文件 ........................................ 367
5.6.2 images.py 文件 ........................................ 374
5.6.3 locks.py 文件 ........................................ 376
5.6.4 temp.py 文件 ........................................ 378
5.6.5 move.py 文件 ........................................ 379
5.6.6 storage.py 文件 ........................................ 381
5.6.7 uploadhandler.py 文件 ........................................ 384
5.7 发送邮件 ........................................ 393
5.8 小结 ........................................ 405
第6 章 Django 的视图层 ........................................ 406
6.1 视图层实战 ........................................ 406
6.1.1 实验1:Django 中的hello, world” ........................................ 406
6.1.2 实验2:Django 中的视图类 ........................................ 409
6.1.3 实验3:Django 中的请求传参 ........................................ 410
6.1.4 实验4:Django 中的文件上传演示 ........................................ 414
6.1.5 实验5:在Django 中操作Session ........................................ 417
6.2 请求与响应 ........................................ 419
6.2.1 HttpRequest 类的源码 ........................................ 429
6.2.2 HttpResponse 类的源码 ........................................ 433
6.2.3 HttpRequest 类和HttpResponseBase 类的操作示例 ................................ 440
6.3 视图层核心源码解读 ........................................ 444
6.3.1 HTTP 请求路径的匹配过程 ........................................ 449
6.3.2 答疑解惑 ........................................ 457
6.4 视图类与Mixin 类 ........................................ 462
6.4.1 Mixin 类的源码解析 ........................................ 462
6.4.2 TemplateView 类的源码解析 ........................................ 463
6.4.3 RedirectView 类的源码解析 ........................................ 467
6.4.4 DetailView 类和ListView 类的源码解析 ........................................ 469
6.4.5 MultipleObjectMixin 类的源码解析 ........................................ 479
6.4.6 Paginator 类的源码解析 ........................................ 482
6.5 追踪Session 相关的源码 ........................................ 486
6.5.1 Session 相关的配置 ........................................ 486
6.5.2 Session 的存储引擎 ........................................ 495
6.5.3 SessionBase 类中的代码文件 ........................................ 502
6.6 答疑解惑 ........................................ 507
6.7 小结 ........................................ 517
第7 章 Django 的中间件原理 ........................................ 518
7.1 配置中间件 ........................................ 518
7.2 加载中间件 ........................................ 519
7.3 中间件的处理流程 ........................................ 521
7.3.1 中间件的请求处理流程 ........................................ 521
7.3.2 中间件的响应处理流程 ........................................ 525
7.3.3 中间件的其他钩子方法 ........................................ 526
7.4 常用的中间件 ........................................ 528
7.4.1 Django 内置的中间件类 ........................................ 528
7.4.2 CsrfViewMiddleware 中间件 ........................................ 529
7.5 自定义中间件 ........................................ 536
7.6 小结 ........................................ 541
第8 章 解读Django 中的辅助代码 ........................................ 542
8.1 自动重载 ........................................ 542
8.2 日志配置 ........................................ 552
8.2.1 日志配置实战 ........................................ 553
8.2.2 日志配置的源码追踪 ........................................ 555
8.3 时间解析 ........................................ 559
8.3.1 datetime_safe.py 文件 ........................................ 559
8.3.2 dateformat.py 文件 ........................................ 562
8.3.3 dateparse.py 文件 ........................................ 565
8.4 文本处理 ........................................ 569
8.4.1 text.py 文件中的capfirst()函数和wrap()函数 ........................................ 570
8.4.2 html.py 文件中的代码 ........................................ 575
8.5 其他的类与函数 ........................................ 582
8.6 小结 ........................................ 589


推荐

车牌查询
桂ICP备20004708号-3