Django 之 MVT 模式
1 MVC 模式
MVC
, 全名 Model View Controller
, 是软件工程中的一种软件设计模式 (常用于架构层面),把软件系统分为三个基本部分:模型 (Model)
, 视图 (View)
和 控制器 (Controller)
。分层的好处很明显,把一团软件代码分成职责分明的层次,每一层有其专注的领域层与层之间也有明确的接口,实现上可以分层实现,哪层实现的不好重构之对整体也影响不大 。具有耦合性低,重用性高、生命周期成本低等优点。
- Model(模型): 简而言之即 数据模型 。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系 。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相互关系(单对单,单对多关系等),以及一些数据层面的业务逻辑。Web 开发框架会根据模型的定义来自动生成数据表。
- Controller (控制器):应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据(比如增加或更新数据表)。
- View (视图): 主要用于显示数据,用来展示用户可以看到的内容或提供用户可以输入或操作的界面。数据来源于哪里?用户输入的数据给又谁?为了降低系统的耦合程序,中间就会抽像出控制器一层做为两者的桥接。
MVC 最大的优点是实现了软件或网络应用开发过程中数据、业务逻辑和用户界面的分离,使软件开发更清晰,也是维护变得更容易。这与静态网页设计中使用 html 和 css 实现了内容和样式的分离是同一个道理。
而 Django
的 MVT
设计模式由 Model (模型) , View (视图) 和 Template (模板) 三部分组成,分别对应单个 app 目录下的 models.py
, views.py
和 templates
文件夹。它们看似与 MVC 设计模式不太一致,其实本质是相同的。MVT 模式其实是一种特殊的 MVC 模式的实现。
概述 - 初识 Django
Django
是一个开放源代码的 Web 应用框架,由 Python
写成。采用了 MTV 的框架模式,即模型 M,视图 V 和模版 T。
有趣的是,这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt
来命名的。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统)
软件,并于 2005 年 7 月在 BSD 许可证下发布。所以使用了 Django 后我们会发现,其“集成管理后台”、“模板页面”等设计思想偏向于帮助人们快速实现一个 CMS
(毕竟其前身就是一个CMS,并从中抽象而得之)。
Django
的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以 “插件” 形式服务于整个框架,Django 有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得 Django 具有很强的可扩展性。它还强调快速开发和 DRY (Do Not Repeat Yourself)
原则。Django 框架的核心组件有:
- 用于创建模型的对象关系映射;
- 为最终用户设计较好的管理界面;
- URL 设计;
- 设计者友好的模板语言;
- 缓存系统
也因为其良好的设计与简单、快速的特点,常用于快速构造中大型内部系统。
Ant Design Pro 入门
1 And Design Pro 是什么?
And Design Pro
(官网),我们一般也将之简称为 antd pro
,是Ant Design
的升级版。如果你接触过Ant Design(常简称之为 antd)
,antd 是基于Ant Design 设计体系的React UI 组件库,主要用于研发企业级中后台产品。
而 antd pro
则在其之上,增加了 umiJS
的扩展加成,提供了路由、国际化、权限管理等功能,从而成为一整套企业级的中后台前端解决方案,从 AntD 官网介绍可以看出:
Ant Design Pro 是基于 Ant Design 和 umi 的封装的一整套企业级中后台前端/设计解决方案,致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。随着『设计者』的不断反馈,我们将持续迭代,逐步沉淀和总结出更多设计模式和相应的代码实现,阐述中后台产品模板/组件/业务场景的最佳实践,也十分期待你的参与和共建。
也就是说,And Design Pro
是不仅是一套前端开发框架,更是一整套的中后台前端解决方案,在力求提供开箱即用的开发体验,为此我们提供完整的脚手架,涉及国际化,权限,mock,数据流,网络请求等各个方面。为这些中后台中常见的方案提供了最佳实践来减少学习和开发成本。
本章我们会了解 antd pro
的大概,了解antd pro
是什么、目录结构大概,然后创建一个基础项目并运行之。
Python 代码规范
编码是将信息从一种新式或格式转变为另一种形式的过程,在计算机硬件中,编码就是利用代码来表示各组数据资料,使计算机能够读懂这行代码并对信息进行分析和处理。
统一代码规范,就是统一代码的组织方式,让团队以最优的、一致的方式及组织代码,从而减少额外的阅读代码的负担。
《大前端三问》 -- 总目录
苏格拉底是古希腊著名的思想家、哲学家、教育家。他和他的学生柏拉图,以及柏拉图的学生亚里士多德并称为 “古希腊三贤”,被后人广泛地认为是西方哲学的奠基者。
而苏格拉底提出了著名的人生哲学终极三问:“我是谁、我从哪里来、我要到哪里去?”
为何这会被称为终极三问?因为这些问题表面上简单,其实很难回答上来。我是谁?很多时候你以为你知道你是谁,其它你只知道自己的标签。我是一个程序员、我是一名父亲、我是一名党员,那么终究到底除却这些标签后,你还是谁呢?你是从哪里来的,你要到哪里去?
技术也是一样的,我们常常只对一个技术留于表面,比如我们知道 面向对象编程
,那什么是 面向对象
,他的本质是什么,这个技术或机制是怎么设计出来的,为什么要这样设计,我们常常选择性忽略这些问题或满足于对其的一知半解。而 技术三问系列
就是这样的一个自醒的专题,我希望在这里记录下我对这门技术的认识,并要求自己不断地追求探索,企图了解更多其中的奥妙与真谛。
其中对于每一个技术点我都希望遵循这样的结构(下面的 XX 代表每章要讲的内容,有些摘录的文章会直接抄录原文的内容,注明是【转】的,并给出原文作者与地址):
- 是什么:XX 是什么,尽自己最大能力说明 xx 的作用、本质、及是如何产生、实现、应用的。
- 为什么:XX 是为了解决什么问题,解决这个问题有些什么现有的方法,为什么要用 XX。
- 怎么样:XX 的设计与实现是怎样的,XX 是怎样工作来解决问题的。
- 还能怎样:进阶应用,怎样优化 XX,还有哪些延伸的应用。
- 操作:命令、代码、步骤记录。更
贴近实际项目与产品
,尽量结合实际工作中的经验、工具、流程。
《大前端技术》 -- CSS 预处理器
读《老人与海》(一)-- 战士与苍蝇
一个人可以被毁灭,但是不能给打败。
-- 海明威
朋友,当你路过上面这句话时,请放慢“眼步”,如果可以的话,请你记下他。他将是你在孤独无助时、在挑战面前欲要退却时、在困难降临顿感彷徨时的一座支点。请你好好收入心里,他能助你直面挑战、挺过艰难。这些年,当我面对潮水般挑战与质疑时,就是如此心中默念着这句话,微笑地挺过去。