Flask从0到1(注:需要懂得MTV、MVC和WSGI理论本文不在叙述)
Flask简介
flask是一款非常流行的Python Web框架,出生于2010年,作者是Armin Ronacher,本来这个项目只是作者在愚人节的一个玩笑,后来由于非常受欢迎,进而成为一个正式的项目。
flask自2010年发布第一个版本以来,大受欢迎,深得开发者的喜爱,目前在Github上的Star数已经超过55.5k了,有超Django之趋势。flask能如此流行的原因,可以分为以下几点:
- 微框架、简洁、只做他需要做的,给开发者提供了很大的扩展性。
- Flask和相应的插件写得很好,用起来很爽。
开发效率非常高,比如使用SQLAlchemy的ORM操作数据库可以节省开发者大量书写sql的时间。
Flask的灵活度非常之高,他不会帮你做太多的决策,一些你都可以按照自己的意愿进行更改。比如:
- 使用Flask开发数据库的时候,具体是使用SQLAlchemy还是MongoEngine,选择权完全掌握在你自己的手中。区别于Django,Django内置了非常完善和丰富的功能,并且如果你想替换成你自己想要的,要么不支持,要么非常麻烦。
- 把默认的Jinija2模板引擎替换成其他模板引擎都是非常容易的。
安装Flask:
通过pip install flask
即可安装
第一个Flask项目
这里使用的是pycharm专业版,python3.7.0(社区版也无所谓)
用`pycharm新建一个flask项目,新建项目的截图如下:
我这里中文是直接装了一个插件想安装的自行搜索
这里大家自己进行配置设置完事之后点击创建之后第一个页面应该是app.py
#coding: utf8
# 从flask框架中导入Flask类
from flask import Flask
# 传入__name__初始化一个Flask实例
app = Flask(__name__)
# app.route装饰器映射URL和执行的函数。这个设置将根URL映射到了hello_world函数上
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
# 运行本项目,端口默认是5000
app.run()
然后运行项目可以在pycharm里面运行也可以在文件的目录路径运行指令python app.py
终端运行这个app.py (推荐在终端运行,不推荐pycharm里面运行)
然后浏览器输入http://127.0.0.1:5000
就能看到hello world
了。需要说明一点app.run
这种方式只适合于开发,如果在生产环境中,应该使用Gunicorn
或者uWSGI
来启动。如果是在终端运行的,可以按ctrl+c来让服务停止。
我们第一眼看到是一个装饰器。
我们的一个上面这个@app.route('/')
叫做路由。
下面这个def hello_world():
叫做视图函数 view
。
但是我们为什么能从http://127.0.0.1:5000
看到我们这个函数执行的内容呢?具体流程如下图:
- 浏览器解析我们的URL地址,第一次解析到是主机地址
- 第二次是要找到为5000端口的这个服务器
Server
- 第三次解析到
5000
后面就是路由字段,通过路由字段找到要执行的视图函数 - 第四次会执行这个视图函数
- 第五次把执行的内容返回给服务器
Server
- 第六次服务器再把内容返回到浏览器
这样就能看到Hello World!
这个聊完之后我们来看看app.run()
里面有什么参数?
app.run(host="0.0.0.0", port=8080)
host=
其实就是ip地址 的意思默认是本机ip地址 设置成"0.0.0.0"
就代表一个局域网下所有人都可以访问你。prot=
是设置端口号,之前是默认5000端口,一个端口号对应的是一个程序
如果我们已经设置了IP地址是本机,那么就代表访问的是这台电脑的一个端口号对应的程序。
设置完成来运行一下
(注意:如果你是在app.run()里面设置的话,一定要在文件所在的终端运行,pycharm里面运行的话默认走的是pycharm里面的配置,会失效的)
0.0.0.0
代表本机地址,我这台电脑地址是192.168.1.32
并且127.0.0.1
也代表本地地址
那我们可以在浏览器访问:
http://192.168.1.32:8080/
当然http://127.0.0.1:8080/
也是可以的,
这代表访问192.168.1.32
的这台电脑的8080
端口的应用程序。
之后我们看这个函数:
我们给·Hello World!'
乘2来试试看:
@app.route('/')
def hello_world():
return 'Hello World!' * 2
之后我们刷新浏览器看看有没有成功,
然而并没有显示:
那我们可以重新启动运行这个app.py文件 ctrl+c
退出运行状态再次重新运行这个python app.py
,再次刷新页面就可以看到成功了
但是这样岂不是太麻烦,我们以后每次要写代码难不成都要重新启动吗?
这个问题我们下次说其实很简单,看到这里有人已经猜到了吧,主要是这次没时间了 哈哈哈哈