【Python搞搞轻量Blog】第一发 Flask入门
我发现很多小伙伴一直想着有自己的一个博客,而且还想自己写一个。
你们都这么爱折腾,我就给你们搞一个轻量级级别的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(宝塔面板)
之前简单谈了一下服务器,感觉不去实践,总差点东西,那么这次就来从零开始学习如何玩服务器,由于本人也是新手,会逐步完善的,如果有什么错误,还请大佬们斧正.为了更好的入门,就利用宝塔面板这个工具,这样通过 ...
- [转载] Python轻量Web框架Flask使用
参考链接: Python | 使用Flask进行Web开发简介 Python语言近些年越来越火,其特点是开发迅速,语法简单,可移植等.本人就Python3基础语法写了Demo:https://gith ...
- Python定时任务轻量解决方案---Schedule
写后端的同学们可能都知道,工作中可能需要周期性执行一些任务,俗称定时任务.Linux环境下,可以借助于系统自带的crontab完成定时任务.但是很多时候,开发的同学们可能并没有权限去操作crontab ...
- python连接php_PHP+Python,轻量维护超轻松
window下安装Python 直接去Python官网下载msi安装程序安装即可(选择自定义安装才能修改程序安装路径哦) widows下Python的数据库访问模块PyMysql的安装 1.open ...
- 腾讯云2核4G服务器5M带宽轻量CPU性能、流量和系统盘测试
腾讯云轻量应用服务器2核4G5M配置,自带5M公网带宽,5M带宽下载速度峰值可达640KB/秒,系统盘为60GB SSD盘,每月500GB流量包,折合每天16GB流量.腾讯云百科来详细说下腾讯云轻量应 ...
- 慎入坑:腾讯云轻量2核2G3M服务器30元不建议选择
腾讯云轻量应用服务器2核2G3M带宽30元3个月不建议买,自带3M带宽,下载速度可达384KB/秒,100%CPU性能,系统盘为40GB SSD盘,200GB月流量,折合每天6.6G流量,地域节点可选 ...
- 腾讯云2核2G4M轻量服务器带宽CPU流量系统盘性能测评
腾讯云轻量2核2G4M服务器自带4M公网带宽,下载速度可达512KB/秒,100%CPU性能,系统盘为50GB SSD盘,300GB月流量,折合每天10G流量,地域节点可选上海/广州/北京.腾讯云百科 ...
- python的ide编辑器_python轻量IDE编辑器 pyscripter 免费开源 更新3.6.3版本
PyScripter是一个开放源码的Python集成开发环境(IDE),它的目标是在功能上与其他语言的商业IDE竞争.它功能丰富,但也很轻量. 使用PyScripter,您必须确保有一个Python版 ...
- 轻量快速的CI工具Drone快速入门
前言 公司之前一直在使用 Jenkins 作为 CI/CD 工具, Jenkins 非常强大,它完成了几乎所有 CI/CD 的工作,并且应用于整个团队有好长一段时间了.但是随着公司推荐数字化.智慧化, ...
最新文章
- 关于String数组的用法
- .NET代码编写规范 整理
- YbtOJ#20235-[冲刺NOIP2020模拟赛Day9]公共序列【dp】
- leetcode704. 二分查找
- 使用IDEA搭建XXL-JOB分布式任务调度平台
- 商标注册流程与注意事项
- 【Hibernate】ch01Demo
- 融云联合ofo给大家送福利!
- 【CarMaker学习笔记】手把手教你搭建一个闭环道路并运行车辆
- 数字图像处理 冈萨雷斯(第四版)距离测度
- 艾宾浩斯遗忘曲线PHP,艾宾浩斯遗忘曲线复习计划表-2018新版.pdf
- Thinkphp 5.x远程命令执行漏洞
- 面试系列(九):商汤科技 深度学习平台C++研发
- hdu 5234 - Happy birthday DP
- [SCUCTF2022]校赛Web出题笔记
- 测试wifi覆盖范围的软件
- 关于Gson对日期的格式化
- ElasticSearch断路器
- APISIX 极简入门(国产微服务网关)
- 16进制数之间的加法
热门文章
- 微信养号教程预防封号
- 万用表怎么测量电池容量_怎么用万用表检测电池剩余电量 你值得一看的技巧...
- SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师(4)
- 6阶群的非平凡子群_6阶群的非平凡子群_黄磊小女儿6岁生日会曝光,多妹颜值不输姐姐,黄多多耳饰引争议......
- 使用PCA拟合平面(Plane Fitting using PCA)
- android:scaleType 属性介绍
- 海信、格力、小米、科沃斯等空气净化器的“小涨潮”,难掩行业“大退潮”之下的尴尬
- 标题word修改多级列表,与出现数字介于1-600的错误
- 牛客前端刷题(五)—— CSS相关概念
- 十八:享元模式(共享重复对象,分离不同对象)