投稿    登录
  博主录制的Python3爬虫视频教程已发布!详情请戳Python3爬虫视频教程!希望大家支持!非常感谢!

【Python搞搞轻量Blog】第一发 Flask入门

Python 仙宇 5432浏览 34评论

 大家好,我是仙宇(其实就是咸鱼)

我发现很多小伙伴一直想着有自己的一个博客,而且还想自己写一个。

你们都这么爱折腾,我就给你们搞一个轻量级级别的Blog.

准备

我们要用Python来写一套轻量级的博客,那么必须要有Python方面的基础.

如果有HTML和CSS的基础食用更佳…

 

介绍 AND 框架选择

Python有很多Web框架,可谓是百家争鸣,我这里列出几个比较叼的几个框架

  • Django      市场占有率最高,官方文档几近完美,但是适合比较大的项目,小项目会显得累赘。
  • Tornado    可异步,性能高,提供更多的底层细节,还能进行Web Socket,但是和数据库…..(大坑)
  • Web.py      小巧,精炼,扩展不是很多,而且问题是作者太牛掰,被上帝请去喝茶了。
  • Flask          年轻,2010年出现、可扩展、小巧、内置开发服务器和调试器、使用jinja2模板、完全兼容WSGI 1.0

 

框架十分多,但是我们用哪个框架来搞我们的轻量级博客呢?

答案是: Flask

 

理论概念 MVC

啥事MVC呢?

很多小伙伴一脸懵逼,这Tm又是个神马?

M:Model ==> 数据库模型

V:Views ==> 可以理解为定义网页的地址,以及渲染网页等

C:Controller ==> 可以理解为 网页功能的逻辑,实现

 

安装

Flask 库的名字就叫 flask

我们使用pip进行安装

pip: 专门负责对python库的管理

install: 安装

选用豆瓣的Pypi库安装flask会很快(国内)

 

测试是否成功安装

打开Python

只要没报错,就是成功安装 Flask库了

裸跑Web应用

库已经安装了,那就该讲讲如何利用Flask来写一个简单的Web应用。

我们来运行试试。

然后我们去用浏览器访问页面

开启Debug调试

如果我们修改了代码,我们需要将开启的Web程序关闭再开启,这样会影响开发效率,也很烦。

Flask内部有一个功能,专门针对这样的事情发生。

修改代码

我们添加了一个参数,就是debug,这个参数默认是False

开启这个功能后,我们每次修改完代码,Web应用对自动进行调整。

现在修改代码并且保存,应用就会自动更新你的代码。

分析

现在我们来分析一下代码

所有Flask程序都需要进行创建一个实例。Web服务器会使用WSGI协议,将接受到的客户端请求转交给这个对象处理,可以理解为代码中的app

第3行:Flask需要一个参数,这个参数通常是主模块或是包的名字。所以通常会传入 __name__

Flask用这个参数来决定程序的根目录,以便以后找到资源文件,比如网页中的图片,视频,音频等

 

第5行:可以通过使用app.config类来修改配置,开启调试模式。当然,这里所采用的方法只能适用于设置很少的时候,以后会介绍另外几种修改配置的方法。

第7行: 还记得我之前提到了MVC吗?这里就是其中V,就是路由。这里的代码的目的就是为我们来指定一个路由,也就是页面的地址。

第8 – 9行: 使用app.route()装饰器会将URL和执行的视图函数(函数 index )的关系保存在app.url_map属性上。当你访问指定的URL时,就会调用这个函数。当遇到第一个return时,就会结束。其中的return就是你的response

第12行: 执行app.run来启动服务器。默认的Flask会监听的地址是127.0.0.1:5000。我们指定host和port参数,就修改了监听地址。 服务启动后,会先判断参数host以及port是否为None,如果为None,就会将host和port修改为默认值。然后会判断debug。然后就会调用werkzeug.serving.run_simple来启动Web服务,默认会使用单进程的werkzeug.serving_BaseWSGIServer来处理客户端的请求。

(这里的Werkzeug其实就是WSGI的实现和应用,从中可以发现,Flask是基于Werkzeug开发的。你或许可以去查查Werkzeug的文档,来自己实现一个Web服务框架)

深入

我贴出Flask源码我们来瞅瞅

 

从827行代码可以发现 Flask从 werkzeug.serving引入了run_simple,之后的一部分代码就是进行调整和检验参数(host和port再有就是debug),最后把参数传给了run_simple来启动服务。

所以大家不要以为框架都是高大上,有时候看看源码,就会发现没有想象的那么困难。

再来看看 run_simple可以看到,processes就是进程,processes默认值为1。

注意

还要注意的就是,这里的app.run的启动方法,只适合在码代码的时候调试。

千万不要在产品上线的时候也用这种方法来启动服务!!!

以后我会给大家介绍在生产环境下如何配置。

或许大家可以去看看关于uWSGI的文章。

最后,贴上我微信二维码,有问题的小伙伴请留言,我也在学习,希望大家有什么坑可以抛出来交流。

 

转载请注明:静觅 » 【Python搞搞轻量Blog】第一发 Flask入门

喜欢 (37)or分享 (0)

我的个人微信公众号,联系我请直接在公众号留言即可~

扫码或搜索:进击的Coder

进击的Coder

微信公众号 扫一扫关注

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(34)个小伙伴在吐槽
  1. buy cheap cialis online here "http://cialisnrx.com/" - cialis online generic cialis cialisnrx.com
    Dereklieta2018-06-21 12:55 (58分钟前)回复
  2. Gay porn from collective networks http://blackgay.net.erolove.in/?info-brad gay shops harvey levin gay malchik gay is kevjumba gay gay sport
    coryrv692018-06-20 19:27 (18小时前)回复
  3. Мы развозим питьевую воду как частным, так и юридическим лицам. Наша транспортная служба осуществляет доставку питьевой воды на следующий день после заказа. http://xn----7sbfi1cac.xn--p1ai - вода-нн.рф - заказать воду . Срочная доставка в день заказа доступна для владельцев клубных карт. Доставка воды происходит во все районы Нижнего Новгорода, в верхнюю и нижнюю части города:
    VodaCed2018-06-18 11:47 (3天前)回复
1 2 3