Python编程(三):Python之MVC

很大程度上,web开发的模式演进路线和桌面UI的演进历史惊人的重合:最开始,CGI拼字符串;对应桌面程序的console界面时代。后来web开发开始MVC化,也基本上是借鉴桌面GUI开发时的数据库封装(Model),布局文件(View),业务逻辑(Control)。后来web开发越来越注重用户的实时交互,从而变得富JavaScript化。个人感觉和桌面GUI库中的callback化很类似。

web开发以后的趋势应该是“控件化”,前后端的界限会变得模糊,可能会出现一套包含前后端的控件库。比如一个登陆框,会抽象成一个类,里面包含了各种参数化的界面,动画,后端数据库映射,异常处理等等。感觉RoR(Ruby on Rails)就有点这种发展趋势。

Python的web框架是非常非常之多的,这说明用Python开发web应用是非常流行的,但这也说明了一个可悲的问题:Python不像Ruby那样有一个Rails似的一统天下的框架,我也经常被初学者问起Python web开发哪家强之类的问题。

Python Web框架一览:

WebFrameworks

但平时工作和技术交流过程中我们发现,常用的Python web开发框架还是比较固定的。

这里我分两大类讲

·       大而全的框架

o  Django,这个应该是现在Python界名气最大的开发框架了,真正的全功能。有个小tips,Django这个单词,D是不发音的,所以这个单子发音大概是“坚狗”,不是“帝坚狗”。Django在实际的大型网站项目中应用的也是比较少的,也是由于“样样行,样样都不精”。但值得一提的是Django里面有个django-admin 模块,可以用这个模块快速的开发出界面很炫酷的系统,一个朋友在这个模块上深度开发了一个项目,可以供大家参考学习:sshwsfc/django-xadmin · GitHub

§ 官网

The Web framework for perfectionists with deadlines

§ Hello World

稍微有点复杂,要配置route等。详情请见:Django documentation

o  web2py,这个框架由于Django的出现,现在逐渐式微了。

·       轻量级框架

o  web.py,这个框架是个有故事的框架。它的作者是天才Aaron Swartz,这个也是曾经最为流行的 Python轻量级web框架,但由于2013年作者自杀身亡后就基本停止更新了,现在用的人也逐渐变少了。

我认为还是有必要介绍一下它的作者,一个我很崇拜的人:

有一部关于他的纪录片,《互联网之子》《The Internet‘s Own Boy: The Story of AaronSwartz》 (2014)。地址: 互联网之子 (豆瓣)

2013年1月11日,美国程序员、作家、政治活动组织者、互联网活动家Aaron H. Swartz在纽约自杀身亡,享年26岁。

Swartz出生于1986年,在14岁时,就已经加入W3C RDF核心工作组。在麻省理工学院,他与Web发明人Tim Berners-Lee一起工作,并协助开发并传播了Web上数据共享的标准,他与其他人联合写就了目前广泛使用的RSS 1.0规范。他是markdown的联合创始人,还是知名社会化新闻站点Reddit的三个拥有者之一,他还创造了python web应用框架web.py。

Swartz曾在Stanford读过一年,然后主动退学,创立公司Infogami,该公司受到Y Combinator首次SummerFounders Program资助。

2007年,他领导非盈利组织Open Library的创立,该组织意将世界上所有曾经出版过的书的信息都收集起来。

此后,Swartz在哈佛道德中心实验室(Harvard‘s Ethics Center Lab)完成了一个研究生奖学金,研究制度腐败(InstutionalCorruption)。在2010年,他创建了http://DemandProgress.org,发起运动“反抗互联网审查法案SOPA/PIPA”。

2011年7月,美国联邦大陪审团起诉Swartz,罪名是他从JSTOR在线杂志档案系统上下载了海量学术性文档,并大量散发。此后,他为Avaaz基金会工作,这是一家非盈利性组织,致力于“全球web运动,将人民群众的力量带入到政府决策过程中”。

o  Flask,中文的意思是“烧瓶”。首先,我们需要明确一个概念,“轻量级”不代表功能简陋,而是设计思想。一切MVC组件都是可替换的。其默认 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。正因为良好的扩展性,Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用 Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

§ 官网

Welcome | Flask(A Python Microframework)

§ 安装

pip installFlask

§ Hello World

from flask import Flaskapp = Flask(__name__)

@app.route("/")def hello():    return "Hello World!"

if __name__ == "__main__":    app.run()

o  Bottle,中文的意思是“瓶子”。这个框架和Flask十分的的相似,相似到很多场景下把import Flask 直接改为 import bottle就能直接切换框架。但这连个框架的设计思想相差很多:

Flask倾向于用已有的开源框架来“拼凑”出一个完整的框架,例如Werkzeug、Jinja2。避免重复造轮子;而Bottle的作者似乎比较坚持,自己写的东西才有更好的可控性,作者也对“单文件” 的实现十分的坚持。

我个人比较喜欢Flask的方式,Flask也的确展示出了极强的可变行,如果你想将默认的模版引擎从Jinja2替换成Mako,你甚至都不用引入任何其它的扩展。

◆著作权归作者所有◆

商业转载请联系作者获得授权,非商业转载请注明出处。
原文链接:http://zhuanlan.zhihu.com/auxten/20171274

==========================================

欢迎关注Reboot教育 运维自动化课程

课程详情点击:http://www.51reboot.com/course/devops/

报名QQ:979950755(小夏)   279312229(ada)

>>更多技术交流,请加群:238757010

时间: 2024-10-12 13:34:16

Python编程(三):Python之MVC的相关文章

代写python,代写python编程,python代写,python编程代写,留学生python代写

代写python,python代写,代写python编程,python编程代写,留学生python代写 本人以及代写团队成员均毕业于国内.海外计算机专业知名学府,现均就职于国内顶尖互联网企业任职高级开发工程师,现利用闲暇之余接编程代写,具体接单范围如下: 代写python,python代写,python编程代写,python课程远程辅导 代写C语言,代写C++ 代写java,java编程代写 代写操作系统operation system 代写计算机网络computing network 代写Li

零基础能学Python编程吗 Python就业市场怎样

零基础能学Python编程吗?Python就业市场怎样?Python的用处很广,比如数据挖掘,数据分析,网络爬虫,机器学习,科学计算哲学前沿领域都Python的用武之地. 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的,因为现在Python正在朝着3.x版本进化,在进化过程中,大量的针对2.x版本的代码要修改后才能运行.所以,目前有许多第三方库还暂时无法在3.x上使用. ? ? 学习Python语言,就像学习其他编程语言或者是学习某门外语一样 ,我们应该从Py

python编程(python开发的三种运行模式)【转】

转自:http://blog.csdn.net/feixiaoxing/article/details/53980886 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 单循环模式 多线程模式 reactor模式 [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] Python作为一门脚本语言,使用的范围很广.有的同学用来算法开发,有的用来验证逻辑,还有的作为胶水语言,用它来粘合整个系统的流程.不管怎么说,怎么使用pyt

python爬虫(三)--Python的set()

如果你已经掌握了爬虫基础,看了我前面三个基础再来继续看这一篇文章.这篇文章主要讲解爬虫程序中必须要用到的python集合,如果你对集合很了解.那可以不用看. 在爬虫程序中,为了不重复爬取已经爬过的页面,我们需要把已经爬过的页面的url放进集合中,在每一次要爬取某一个url之前,先看看集合里面是否已经存在,如果已经存在跳过这个url,如果不存在我们把ur放进聚合中,然后再去爬取这个页面 python提供了set这种数据结构,set是一种无序的,不包含重复元素的结构,一般用来测试是否已经包含了某元素

Python编程系列---Python中装饰器的几种形式及万能装饰器

根据函数是否传参  是否有返回值 ,可以分析出装饰器的四种形式: 形式一:无参无返回值 1 def outer(func): 2 def wrapper(): 3 print("装饰器功能1") 4 ret = func() 5 print("装饰器功能2") return ret 6 return wrapper 7 8 # 定义一个无参无返回值的函数 9 @outer 10 def main_func(): 11 print("hello")

【Python基础】Python模块

Python模块 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中一个.py文件就称之为一个模块(Module).使用模块有什么好处?1.最大的好处是大大提高了代码的可维护性.2.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候

Python编程从入门到实践(第三、四章的列表和元祖) 𢪿

原文: http://blog.gqylpy.com/gqy/414 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

19 图形用户界面编程 - 《Python 核心编程》

?? 引言 ?? Tkinter 与Python 编程 ?? Tkinter 模块 ?? Tk 组件库 ?? Tkinter 使用举例 ?? 标签.按钮与进度条组件 ?? 一个使用 Tk 的中级范例 ?? 其他 GUI 简介(Tix, Pmw, wxPython, PyGTK) ?? 相关模块和其他 GUI Python 的默认GUI 工具集是Tk,它也是我们将使用的最基本的GUI 工具集. 我们可以通过Python 接口Tkinter 来使用Tk(Tkinter 正是“Tk 接口”之意). T

18 多线程编程 - 《Python 核心编程》

?? 引言/动机 ?? 线程和进程 ?? 线程和 Python ?? thread 模块 ?? threading 模块 ?? 生产者-消费者问题和 Queue 模块 ?? 相关模块 18.1 引言/动机 18.2 线程和进程 什么是进程? 计算机程序只不过是磁盘中可执行的,二进制(或其它类型)的数据.它们只有在被读取到内 存中,被操作系统调用的时候才开始它们的生命期.进程(有时被称为重量级进程)是程序的一次 执行.每个进程都有自己的地址空间,内存,数据栈以及其它记录其运行轨迹的辅助数据.操作系

【Python 1】Python核心编程(第二版)导读

第一章 欢迎来到Python世界 什么是Python Python的起源 Python的特点 下载Python 安装Python 运行Python Python文档 比较Python(与其它语言的比较) 其它实现 第二章 Python起步 介绍 输入/输出 注释 操作符 变量与赋值 Python类型 缩进 循环与条件 文件 错误 函数 类 模块 第三章 Python基础 语句和语法 变量赋值 标识符和关键字 基本风格指南 内存管理 第一个Python程序 第四章 Python对象 Python对