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

你们都这么爱折腾,我就给你们搞一个轻量级级别的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安装Flask库Shell

pip install flask --index http://pypi.douban.com/simple --trusted-host pypi.douban.com

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

install: 安装

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

测试是否成功安装

打开Python

导入包测试Python

import flask

只要没报错,就是成功安装 Flask库了
裸跑Web应用
库已经安装了,那就该讲讲如何利用Flask来写一个简单的Web应用。

from flask import Flask # 导入包app = Flask(__name__) # 创建一个Web应用@app.route('/') # 定义路由(Views),可以理解为定义页面的URL
def index(): return "这是用Python + Flask 搞出来的。" # 渲染页面if __name__ == "__main__":app.run(host='127.0.0.1',port=8080) # 运行,指定监听地址为 127.0.0.1:8080

我们来运行试试。

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

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

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

修改代码

if __name__ == "__main__":app.run(host='127.0.0.1',port=8080,debug=True)

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

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

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

分析
现在我们来分析一下代码

from flask import Flask # 导入包app = Flask(__name__) # 创建一个Web应用app.config['DEBUG'] = True@app.route('/') # 定义路由(Views),可以理解为定义页面的URL
def index(): return "这是用Python + Flask 搞出来的。" # 渲染页面if __name__ == "__main__":app.run(host='127.0.0.1',port=8080)

所有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入门相关推荐

  1. 腾讯云轻量应用服务器网站搭建——入门教程1(宝塔面板)

    之前简单谈了一下服务器,感觉不去实践,总差点东西,那么这次就来从零开始学习如何玩服务器,由于本人也是新手,会逐步完善的,如果有什么错误,还请大佬们斧正.为了更好的入门,就利用宝塔面板这个工具,这样通过 ...

  2. [转载] Python轻量Web框架Flask使用

    参考链接: Python | 使用Flask进行Web开发简介 Python语言近些年越来越火,其特点是开发迅速,语法简单,可移植等.本人就Python3基础语法写了Demo:https://gith ...

  3. Python定时任务轻量解决方案---Schedule

    写后端的同学们可能都知道,工作中可能需要周期性执行一些任务,俗称定时任务.Linux环境下,可以借助于系统自带的crontab完成定时任务.但是很多时候,开发的同学们可能并没有权限去操作crontab ...

  4. python连接php_PHP+Python,轻量维护超轻松

    window下安装Python 直接去Python官网下载msi安装程序安装即可(选择自定义安装才能修改程序安装路径哦) widows下Python的数据库访问模块PyMysql的安装 1.open ...

  5. 腾讯云2核4G服务器5M带宽轻量CPU性能、流量和系统盘测试

    腾讯云轻量应用服务器2核4G5M配置,自带5M公网带宽,5M带宽下载速度峰值可达640KB/秒,系统盘为60GB SSD盘,每月500GB流量包,折合每天16GB流量.腾讯云百科来详细说下腾讯云轻量应 ...

  6. 慎入坑:腾讯云轻量2核2G3M服务器30元不建议选择

    腾讯云轻量应用服务器2核2G3M带宽30元3个月不建议买,自带3M带宽,下载速度可达384KB/秒,100%CPU性能,系统盘为40GB SSD盘,200GB月流量,折合每天6.6G流量,地域节点可选 ...

  7. 腾讯云2核2G4M轻量服务器带宽CPU流量系统盘性能测评

    腾讯云轻量2核2G4M服务器自带4M公网带宽,下载速度可达512KB/秒,100%CPU性能,系统盘为50GB SSD盘,300GB月流量,折合每天10G流量,地域节点可选上海/广州/北京.腾讯云百科 ...

  8. python的ide编辑器_python轻量IDE编辑器 pyscripter 免费开源 更新3.6.3版本

    PyScripter是一个开放源码的Python集成开发环境(IDE),它的目标是在功能上与其他语言的商业IDE竞争.它功能丰富,但也很轻量. 使用PyScripter,您必须确保有一个Python版 ...

  9. 轻量快速的CI工具Drone快速入门

    前言 公司之前一直在使用 Jenkins 作为 CI/CD 工具, Jenkins 非常强大,它完成了几乎所有 CI/CD 的工作,并且应用于整个团队有好长一段时间了.但是随着公司推荐数字化.智慧化, ...

最新文章

  1. 关于String数组的用法
  2. .NET代码编写规范 整理
  3. YbtOJ#20235-[冲刺NOIP2020模拟赛Day9]公共序列【dp】
  4. leetcode704. 二分查找
  5. 使用IDEA搭建XXL-JOB分布式任务调度平台
  6. 商标注册流程与注意事项
  7. 【Hibernate】ch01Demo
  8. 融云联合ofo给大家送福利!
  9. 【CarMaker学习笔记】手把手教你搭建一个闭环道路并运行车辆
  10. 数字图像处理 冈萨雷斯(第四版)距离测度
  11. 艾宾浩斯遗忘曲线PHP,艾宾浩斯遗忘曲线复习计划表-2018新版.pdf
  12. Thinkphp 5.x远程命令执行漏洞
  13. 面试系列(九):商汤科技 深度学习平台C++研发
  14. hdu 5234 - Happy birthday DP
  15. [SCUCTF2022]校赛Web出题笔记
  16. 测试wifi覆盖范围的软件
  17. 关于Gson对日期的格式化
  18. ElasticSearch断路器
  19. APISIX 极简入门(国产微服务网关)
  20. 16进制数之间的加法

热门文章

  1. 微信养号教程预防封号
  2. 万用表怎么测量电池容量_怎么用万用表检测电池剩余电量 你值得一看的技巧...
  3. SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(4)
  4. 6阶群的非平凡子群_6阶群的非平凡子群_黄磊小女儿6岁生日会曝光,多妹颜值不输姐姐,黄多多耳饰引争议......
  5. 使用PCA拟合平面(Plane Fitting using PCA)
  6. android:scaleType 属性介绍
  7. 海信、格力、小米、科沃斯等空气净化器的“小涨潮”,难掩行业“大退潮”之下的尴尬
  8. 标题word修改多级列表,与出现数字介于1-600的错误
  9. 牛客前端刷题(五)—— CSS相关概念
  10. 十八:享元模式(共享重复对象,分离不同对象)