flask 框架(其一)基本流程与特殊函数
flask 框架的工作流程: 先通过访问的地址,寻找函数,再通过函数进行操作,或显示网页,或者交互数据
WSGI是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它的可移植性方面的目标。
Werkzeug 是一个 WSGI(在 Web 应用和多种服务器之间的标准 Python 接口) 工具集。Jinja2 负责渲染模板。
如果你启用了调试支持,服务器会在代码修改后自动重新载入,并在发生错误时提供一个相当有用的调试器
1,与flask交互代码!
from flask import Flask, abort, redirect, url_for ''' __name__参数的作用是确认程序所在的位置,__name__ 同级的模块下会有static templates 模块 创建程序实例,__name__ 是表示将模块传递进去!也可以是 __main__,甚至 hello_world(只不过在pycharm指定项目所在的工作区间) 可以传入字符串,不能传入模块名!如果传入模块名,现模块名寻找! 最终是在当前目录下传入! 决定的是Flask在访问静态static 文件的目录,可以自己设置路径。 1、可以传入任意字符串,但是,如果传入标准模块名,它会以为模块名的所在位置包含static目录下的文件 ''' app = Flask(__name__) if __name__ == '__main__': ''' url_map中存储的是路由映射视图函数的列表,以索引下标的访问数据,从上到下依次执行,如果找到不会继续往下找 ''' # 查看路由和视图函数的映射关系 print(app.url_map) # 在开发过程中,一般会开启调试模式,作用代码发生改变,及时更新,不需要重启服务器 # 在生产过程中,不能开启调试模式 加上host='0.0.0.0' 表示本机所有的ip都可以连接,换成真实ip也一样,只能够本机连接 app.run(debug=True)
2,装饰器与视图传参
# 装饰器route() 路由地址,函数方法! @app.route('/index2', methods=['GET', 'POST', 'DELETE', 'PUT']) def index2(): return 'hello world2017' '''视图传参''' # <>里面可以指定参数,默认的参数类型为str类型,标准说法是叫做转换器,默认是str ,可以限制传参类型! # str类型兼容数值类型,数值之间不兼容,可以是其他的类型,但是不能是其他的数值! @app.route('/req_args/<int:args>') def req_args(args): return 'hello %s' % args
3,自定义状态码与自定义错误页面
''' 自定义状态码! ''' # 可以使用不符合http协议的状态码 @app.route("/") def resp_status(): # 返回真实的错误信息,状态码 # 类似python中的raise语句,异常处理;abort函数被执行后,后面的代码不会被执行; # 只能抛出符合http协议的状态码 abort(500) return 'resp status:', 404 '''自定义错误页面''' # errorhander装饰器会捕获abort函数抛出的符合http协议的状态码,将代码返回前端 @app.errorhandler(500) def error_handers(e): return '服务器发生异常了,请稍后访问:'
4,两种重定向定义,使用 url_for 生成指定视图函数所对应的 url
'''重定向''' # 当项目目录或文件发生改变的时候 @app.route('/redirect') def redir_resp(): # redirect接收的参数为固定url,扩展性不强 a = 'http://www.itheima.com' return redirect(a) '''第二种重定向!''' # 重定向建议使用url_for,反向解析,从视图寻找函数!多了个处理过程 # 当页面改变的情况下,只需要定向到具体的视图函数,扩展性更强 @app.route('/abc') def url_resp(): return redirect(url_for('redir_resp'))