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()

Flask程序运行过程

fromconfig import Config

# app设置参数:参数都会添加到app.config的一个字典中

# 方式一:直接像操作字典一样赋值. , 所有的参数名, 底层都是大写的

#app.config['DEBUG'] = True

# 方式二:加载文件

#app.config.from_pyfile('config.py')

# 方式三:加载对象

app.config.from_object(Config)

Flask程序运行过程

# 方式四: app的属性

#app.debug = True

if__name__ == '__main__':

    app.run()

读取配置参数

·       app.config.get()

Flask程序运行过程

·       在视图中current_app.config.get()

from flaskimport Flask, current_app

Flask程序运行过程

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指定静态资源访问的目录, 一般不需要改动,如图源代码:

Flask程序运行过程

#装饰器的作用是将路由映射到视图函数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')