博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Github排名中的Python web框架Flask学习方法,非常受用!
阅读量:6609 次
发布时间:2019-06-24

本文共 2804 字,大约阅读时间需要 9 分钟。

Github排名中的Python web框架Flask学习方法,非常受用!

flask最近终于发布了它的1.0版本更新,从项目开源到最近的1.0版本flask已经走过了8个年头。
Github排名中的Python web框架Flask学习方法,非常受用!
运行python app.py,访问http://localhost:5000/就能看到输出了Hello World!flask诞生在八年前的愚人节,原本只是作者随便写着玩的,想不到一下子就流行起来了。在这八年期间,flask从未发行过一个正式的版本,不过它依然成为了github内最受大家喜欢的Python web框架 ;flask内核内置了两个最重要的组件,其它所有的组件都是通过易扩展的插件系统集成进来的。这两个内置的组件分别是werkzeug和jinja2。
Github排名中的Python web框架Flask学习方法,非常受用!
werkzeug用于编写Python WSGI程序的工具包,在开源社区备受喜爱,它的源码是Python技术领域最值得阅读的开源库。
Github排名中的Python web框架Flask学习方法,非常受用!
运行python wsgi.py打开浏览器访问http://localhost:4000/就可以看到页面输出了Hello World!
Github排名中的Python web框架Flask学习方法,非常受用!
jinja2是一个功能极为强大的模板系统,它完美支持unicode中文,每个模板都运行在安全的沙箱环境中,使用jinja2编写的模板代码非常优美。
Github排名中的Python web框架Flask学习方法,非常受用!
werkzeug和jinja2这两个库的一起特点是编写的代码赏心悦目,作者Armin Ronacher挑选这两个库来作为flask的柱石阐明作者有十分挑剔的代码品味。作者是一位来自澳大利亚的帅哥!

欧了欧了 咱们一起来体会flask的奇特魅力吧!

安装flask

<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">pip install flask

</pre>

圆周率计算API

Github排名中的Python web框架Flask学习方法,非常受用!
圆周率可以使用正整数的平方倒数之和求得,当这个级数趋于无限时,值会越来越接近圆周率。
Github排名中的Python web框架Flask学习方法,非常受用!
运转python flask_pi.py,翻开浏览器拜访http://localhost:5000/pi?n=1000000,能够看到页面输出3.14159169866,这个值同圆周率现已非常挨近。

留意pi()的回来值不能是浮点数,所以必须运用str转换成字符串

再仔细观察代码,你还会留意到一个特别的变量request,它看起来似乎是一个全局变量。从全局变量里拿当时恳求参数,这非常奇怪。如果在多线程环境中,该怎么确保每个线程拿到的都是当时线程正在处理的恳求参数呢?所以它不能是全局变量,它是线程局部变量,线程局部变量外表上和全局变量没有不同,但是在拜访线程局部变量时,每个线程得到的都是当时线程内部同享的目标。

缓存核算成果

为了防止重复核算,咱们将现已核算的pi(n)值缓存起来,下次就能够直接查询。一起咱们不再只回来一个单纯的字符串,咱们回来一个json串,里边有一个字段cached用来标识当时的成果是否从缓存中直接获取的。

Github排名中的Python web框架Flask学习方法,非常受用!
运行python flask_pi.py,打开浏览器访问http://localhost:5000/pi?n=1000000,可以看到页面输出
Github排名中的Python web框架Flask学习方法,非常受用!
读者也许会问,为什么缓存类PiCache需要使用RLock呢?这是因为考虑到多线程环境下Python的字典读写不是完全线程安全的,需要使用锁来保护一下数据结构。

分布式缓存

上面的缓存仅仅是内存缓存,进程重启后,缓存结果消失,下次计算又得重新开始。

Github排名中的Python web框架Flask学习方法,非常受用!
如果开启第二个端口5001来提供服务,那这第二个进程也无法享受第一个进程的内存缓存,而必须重新计算。所以这里要引入分布式缓存Redis来共享计算缓存,避免跨进程重复计算,避免重启重新计算。
Github排名中的Python web框架Flask学习方法,非常受用!
运行python flask_pi.py,打开浏览器访问http://localhost:5000/pi?n=1000000,可以看到页面输出
Github排名中的Python web框架Flask学习方法,非常受用!
重启进程,再次刷新页面,能够看书页面输出的cached字段依然是true,阐明缓存成果不再由于进程重启而丢掉。

MethodView

写过Django的朋友们可能会问,Flask是否支撑类方法的API编写方法,答复是必定的。下面我们运用Flask原生支撑的MethodView来改写一下上面的服务。

Github排名中的Python web框架Flask学习方法,非常受用!
咱们完成了MethodView的get办法,阐明该API仅支撑HTTP恳求的GET办法。假如要支撑POST、PUT和DELETE办法,需要用户自己再去完成这些办法。

flask默许的MethodView挺好用,可是也不行好用,它无法在一个类里供给多个不同URL名称的API效劳。所以接下来咱们引进flask的扩展flask-classy来解决这个问题。

小试flask扩展flask-classy

运用扩展的第一步是安装扩展pip install flask-classy,然后咱们在同一个类里再加一个新的API效劳,核算斐波那契级数。

Github排名中的Python web框架Flask学习方法,非常受用!
Github排名中的Python web框架Flask学习方法,非常受用!
访问http://localhost:5000/fib/100,我们可以看到页面输出了
Github排名中的Python web框架Flask学习方法,非常受用!

好了,关于Python web框架Flask的分享就到这里,如果你跟我一样都喜欢python,想成为一名优秀的程序员,也在学习python的道路上奔跑,欢迎你加入python学习群:839383765 群内每天都会分享最新业内资料,分享python免费课程,共同交流学习,让学习变(编)成(程)一种习惯!

转载于:https://blog.51cto.com/14186420/2349554

你可能感兴趣的文章
springboot中多种获取properties的方式
查看>>
用户配置文件
查看>>
java.util.concurrent系列之--CyclicBarrier
查看>>
海纳百川下载器使用方法图文详解
查看>>
Hive 表的复制 & 新增字段
查看>>
sql时间录入
查看>>
转 C++中的inline用法
查看>>
netty的编解码器介绍
查看>>
linux中 vi / vim显示行号或取消行号命令
查看>>
svn文件修改后,默认只有当前文件更改而父文件没有标注
查看>>
NoSQL分布式数据库的独家见解- Adam Fowler
查看>>
码云生产 添加公钥
查看>>
面试技巧:带走面试官的节奏
查看>>
css3实现星星闪烁效果
查看>>
让我们来说说:Java线程池!
查看>>
Spring Web MVC工作原理
查看>>
PHP6种加密方法介绍
查看>>
oracle取前几行|中间几行|后几行
查看>>
java算法-递归算法思想
查看>>
领域驱动的设计
查看>>