1、Flask
组成:werkzueg(专门用来处理请求相关URL) + jinja2(用来渲染模板页面) + 其他扩展包(flask-cache)
2、自定义转换器
#重写父类BaseConverter class MyRegexConverter(BaseConverter):# regex = '\d{3}'def __init__(self, map, regex):super(MyRegexConverter, self).__init__(map)self.regex = regex # 将转换器类添加到系统默认的转换器列表中 app.url_map.converters['abc'] = MyRegexConverter@app.route('/<abc("1[3-9]\d{9}"):number>') def hello(number):return 'the number is %s' % number
3、返回响应
return '字符串',状态码,响应头信息
return jsonify()
url_for('视图函数', key=value) 反解析,返回视图函数相对应的路由地址
4、abort &errorhandler
当访问服务器资源时,如果找不到该资源,可以报出异常信息,使用errorhandler捕捉
@app.route('/index') def index():abort(404)return 'hello'@app.errorhandler(404) def page_not_found(e):print(e)return "页面找不到"
5、request对象参数
request.data# 获取非表单以post提交的数据
request.form# 获取的表单以post提交的数据
request.args# 获取?后的查询数据
request.url #获取请求地址
request.method #获取请求方式
request.files #获取file类型的文件
6、加载信息的配置
class Myconfig(object):DEBUG = True# 从配置类中加载 app.config.from_object(Myconfig) # 从配置文件中加载 app.config.from_file('config.ini')
7、请求钩子
访问正常视图函数的时候,顺带执行的方法
常见的四种请求钩子:
#第一次访问时执行,适合做初始化操作,比如io文件读写 @app.before_first_request def before_first_request():print("before first request")#每次请求前都执行,适合对请求参数做校验,比如访问统计 @app.before_request def before_request():print("before request")#视图函数执行后返回到该方法,适合对返回值做统一处理 @app.after_request def after_request(resp):resp['Content-Type'] = "applicaation/json"print("after request")return resp#请求销毁之后执行该访问,适合做异常信息统计 @app.teardown_request def teardown_request(e):print(e)print("teardown request")