update: 2020-03-04
7. Django
Django框架是使用非常广泛的优秀框架(源自国外一个新闻系统,自带后台),无论其架构设计及构建系统的便利,我们都有必要去学习研究,对于基于其开发系统或者自己设计项目架构都有借鉴意义!
这是我大学时的一门课程,在这里再回顾下,将笔记记录于此,与大家一起学习探讨。
7.1. 设计哲学(理念)
基本目标
低耦合高内聚。Django本身也是一个技术栈,其构建目标就是各模块,如视图、数据库、模板等部分最大化相互解耦,这就增加了框架的灵活性和可扩展性。
基本原则
精简。借助Python语言自身的特性:动态性,如自身机制使框架代码尽可能地精简。
构建快。能够让开发者快速基于框架进行web开发,把一些通用的、复用的功能代码抽象,使我们专注业务实现。
不重复造轮子。各功能模块各就其位,减少冗余,提供扩展性强的接口。
遵循PEP20(翻译为:Python之禅)的原则。
一致性。
各组件设计原则
模型(Model)
明确优于隐式
字段不应该仅仅根据字段的名称来假定某些行为
多使用关键字参数
什么是关键字参数?如: *args, **kwargs。使用关键字参数可增加函数的灵活性,健壮性。
包括所有相关领域逻辑
遵循Active Record模式
表现为类似ORM的作用
在模型中将数据库表定义为一个object,并尽可能全面的定义表的所需信息
数据库API
简洁数据操作代码
避免再写一些繁琐的数据库操作代码,快速实现业务逻辑。
可选择原始SQL
框架支持自定义纯SQL语句,可根据实际业务需求实现。
URL设计
松耦合
URL不用实际的处理函数名耦合
灵活性
鼓励
在URL中应避免出现文件后缀名。
模板系统
逻辑分类方案
view层和Control层分离
避免冗余
把一些的通用的视图放在一起。
从HTML中解耦
模板系统不应该被设计成只能输出 HTML。它应该同样擅长生成其他基于文本的格式,或者仅仅是纯文本。
设计能力交给开发
开发直接编辑相应HTML
更加直接的处理空格
安全机制
内置了开箱即用的模板系统禁止包含恶意代码
可扩展性
自定义的模板标签和过滤器背后的理念.
视图
简洁
传承Python的优良风格
使用请求对象
存储当前请求的元数据的对象,直接传给视图函数,避免从全局访问请求数据的视图函数
松耦合
不受开发人员使用任意模板的影响
GET 方法和 POST 方法的区别
框架是的GET和POST数据很容器区分
缓存框架
目的:减少请求系统的资源开销
given a URL, try finding that page in the cache
if the page is in the cache:
return the cached page
else:
generate the page
save the generated page in the cache (for next time)
return the generated page
更少的代码
一致性
缓存 API 应该为不同的缓存后端提供一致的接口。
可扩展性
我不想用自带的缓存,我想用第三方的缓存框架