Flask程序运行过程
Flask程序运行过程
l 所有Flask程序必须有一个程序实例。
l 当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。
l 此时,Web服务器使用WSGI(Web Server Gateway Interface)协议,把来自客户端的所有请求都交给Flask程序实例,程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。
l 根据每个URL请求,找到具体的视图函数并进行调用。
在Flask程序中,路由的实现一般是通过程序实例的装饰器实现。
l Flask调用视图函数后,可以返回两种内容:
字符串内容:将视图函数的返回值作为响应的内容,返回给客户端(浏览器)
HTML模版内容:获取到数据后,把数据传入HTML模板文件中,模板引擎负责渲染HTTP响应数据,然后返回响应数据给客户端(浏览器)
初始化参数
· import_name:模块名
· static_url_path:静态文件访问前缀
· static_folder:默认‘static’
· template_folder:默认‘templates’
配置参数
· app.config.from_pyfile(“yourconfig.cfg”)
· app.config.from_object()
fromconfig import Config
# app设置参数:参数都会添加到app.config的一个字典中
# 方式一:直接像操作字典一样赋值. , 所有的参数名, 底层都是大写的
#app.config['DEBUG'] = True
# 方式二:加载文件
#app.config.from_pyfile('config.py')
# 方式三:加载对象
app.config.from_object(Config)
# 方式四: app的属性
#app.debug = True
if__name__ == '__main__':
app.run()
读取配置参数
· app.config.get()
· 在视图中current_app.config.get()
from flaskimport Flask, current_app
app.run的参数
app.run(host=”0.0.0.0”, port=5000, debug =True)
#0.0.0.0 全零地址,能够方便的进行局域网切换后的访问。127.0.0.1/局域网IP / 公网IP
# Flask是基于python2.7运行的
示例:
# -*- coding:utf-8 -*-
#导入Flask类
fromflask import Flask, render_template
#Flask函数接收一个参数name,它会指向程序所在的模块
#__name__: 当前程序,就是__main__. 如果被别的模块导入, __name__就是模块名(文件名)
#import_name: 需要传入模块名, 作用查找资源路径的
# 默认会从该模块的同级目录中, 寻找static和template文件夹, 以便获取静态资源和模板文件
# app= Flask(‘reource’)
app= Flask(__name__, static_url_path='/nb', static_folder='static1' )
#
static_url_path指定在访问的时候, 路径叫什么名, 替换默认的'static'
# static_folder指定静态资源访问的目录, 一般不需要改动,如图源代码:
#装饰器的作用是将路由映射到视图函数index
# 视图函数需要紧跟着路由, 这样就可以实现绑定. (路由和视图函数的映射关系就绑定了)
@app.route('/')
def index():
return 'Hello World'
# 导入模板文件
# return render_template('index.html')
#Flask应用程序实例的run方法启动WEB服务器
if__name__ == '__main__':
# 类似与runserver,也是一个Flask自带的简易服务器
# 调试模式: 好处有2个
#1. 保存代码或者离开编辑器, 代码会自动重新运行,方便调试
# 2. 浏览器和编辑器的调试窗口, 会出现错误信息,方便调试
# app.run(debug=True)只针对debug才有的配置方式
# 0.0.0.0 全零地址, 能够方便的进行局域网切换后的访问.
app.run(debug=True, port=5002,host='0.0.0.0')