O、引言
该学习笔记为学习Django后的笔记,因此省略了很多操作步骤以及操作相关的web知识介绍,仅着重介绍Flask相关的内容,且存在和Django的部分对照学习过程,建议食用方式为学习完Django后再进行学习Flask
I、前言
Flask为Python属下的web框架之一,具有比Django更大的灵活性,而由于建立时间较晚,因此相较于Django在实际应用上略逊。但是Flask的强大在于其灵活性以及强可扩展性,这是Django所望尘莫及的。作为一个微框架,Flask的体量也相对于Django小,其在大型网站的应用暂时没有实际示例,而小型app则有很多,因此学好flask框架有利于接下来学习数据挖掘、TensorFlow、PyTorch等工具后将其落地。
II、创建一个Flask项目
首先我们和Django一样,创建一个虚拟环境
mkvirtualenv -p python3 py_flask
workon py_flask
pip install flask
然后打开pycharm,我们以两种方式创建flask项目
1、我们创建一个纯净的python项目,然后新建一个python文件并导入flask,建设一个基础的flask-app并运行(默认端口为5000)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "芜湖"
if __name__ == '__main__':
app.run()
2、我们直接用pycharm自带的功能创建Flask 项目(可自行尝试,不在说明)
III、基础介绍
我们来介绍一下代码内容
# 通过装饰器定位路由
@app.route('/')
# 该路径下应用的函数
def index():
return "芜湖"
# 程序的入口文件
if __name__ == '__main__':
app.run()
# 指向文件所在的包
# __name__ 为Python内的类属性
app = Flask(__name__, static_url_path=None, template_folder='templates', static_folder='static')
"""
static_url_path:静态访问路径(可不传,默认为static)
static_folder:静态文件夹(默认为static)
template_folder:模板访问路径(可不传,默认为templates)
我们可在Flask()内传字段,来设置访问路径
"""
IV、利用Manager进行运行
首先我们需要安装flask-script包
在app内导入,并改写一些内容
from flask import Flask
from flask_script import Manager, Server
app = Flask(__name__, static_url_path=None, template_folder='templates', static_folder='static')
manager = Manager(app)
manager.add_command("runserver", Server("localhost", port=5000))
@app.route('/')
def hello_world():
return "芜湖"
if __name__ == '__main__':
manager.run()
尝试运行一下,依旧正常运行
下面介绍一下该包:
(1)Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任务;使得脚本和系统分开;
(2)Flask Script和Flask本身的工作方式类似,只需定义和添加从命令行中被Manager实例调用的命令;
(3)flask_script的作用是可以通过命令行的形式来操作flask例如通过一个命令跑一个开发版本的服务器,设置数据库,定时任务等
(4)通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过app.run()方法中传参,比如我们可以通过python app.py runserver --host ip地址,告诉服务器在哪个网络接口监听来自客户端的连接。默认情况下,服务器只监听来自服务器所在计算机发起的连接,即localhost连接。
V、程序配置加载
主要存在以下三种方式:
1、从配置对象内加载
app.config.from_object()
2、从配置文件中加载
app.config.from_pyfile()
3、从环境变量中加载
app.config.from_envvar()
①例如:设置改配置 DEBUG = True 使得修改代码后自动保存并重启服务器
# 配置对象,需要给对象添加一些配置
class Config(object):
DEBUG = True
# 从配置对象内加载
app.config.from_object(Config)
设置结束后重启应用即可生效
②创建文件 config.ini内输入
# 在此文件中添加配置
DEBUG = True;
回到app.py删除示例①中的配置语句,添加如下语句,重启服务亦可生效
# 从配置文件中加载
app.config.from_pyfile('config.ini')
VI、app.run()的参数设置
app.run()可以配置端口,以及是否开启调试模式
我们可以进入app下的run()方法看源代码
# 分为当前根地址,端口,debug模式,生产运行时加载部分文件
def run(self, host=None, port=None, debug=None, load_dotenv=True, **options):
# 我们可以尝试修改,并运行后观察显示
app.run(host='localhost', port=5001, debug=True)
VII、一个接下来会用到的工具PostMan
用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代表产品之一。
转自 ---作者:依北辰
链接:https://www.jianshu.com/p/97ba64888894
接下来的API我们都将使用PostMan测试
我们简单的使用一下PostMan如有兴趣可去依北辰的文章内详细学习
首先我们创建一个Collection 命名为Flask,然后点击如下图内的“+”
然后在app内编写一个带装饰器的函数
@app.route('/demo1')
def demo1():
return "demo1"
在GET的输入框内输入http://127.0.0.1:5000/观察postman内的显示
同样的我们可以显示一个带有参数的路由
在app.py内编写
@app.route('/user/<user_id>')
def user_info(user_id):
return 'hello{}'.format(user_id)
打开postman在GET输入框内输入http://127.0.0.1:5000/user/222,观察结果