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

 

posted @ 2018-05-18 09:10  十七楼的羊  阅读(163)  评论(0编辑  收藏  举报