flask框架1

  • 使用的flask版本为0.10.1
  • 创建一个最简单的flask程序:
    from flask import  Flask
    app = Flask(__name__)
    print('run')
    @app.route('/')
    def index():
        return 'hello flask'
    if __name__ == '__main__':
        app.run()
- Flask函数接收一个参数__name__,它会指向程序所在的路径
- 装饰器的作用是将路由映射到视图函数 index
-  run 方法 启动 WEB 服务器
  • 配置初始参数
    • flask实例创建时还可传入:
      • static_path 静态文件访问路径(不推荐使用,可使用 static_url_path 代替)
      • static_url_path 静态文件访问路径,默认为/static
      • static_folder 静态文件存储的文件夹,默认为 static
      • template_folder 模板文件存储的文件夹,默认为 templates
  • 程序加载配置
    • 程序加载运行时的配置,可以配的有debug,数据库链接等,有三种配置方式:
      • 从配置对象中加载:
        • app.config.from_object() 该方式需要先写一个配置类,类中写入相关配置,并将该类传入
      • 从配置文件中加载
        • app.config.from_pyfile() 该方式需要先写一个配置文件,文件写入相关配置,并将该文件名(路径)传入
      • 从环境变量中加载
        • app.config.from_envvar() 不推荐
  • RUN方法的参数:
    • .run(host="0.0.0.0", port=5000, debug = True) 可以指定运行主机的ip,端口以及debug开关
  • 动态路由及传参:
    • @app.route('/') 这种直接指定路径的为静态路由
    • 动态传参,可以获取到指定url后面携带的信息,并可作为参数进行传递:
      @app.route('/user/<user_id>')
      def user_info(user_id):
      return 'hello %s' % user_id
    • 传递的参数还可以指定数据类型,如把<user_id>改为int:user_id,也可以自己定义转换器,来实现参数的控制
  • 指定请求方式:
    • @app.route('/',methods=['post']) 不指定时默认为get
  • 获取请求参数,获取时需先导入 from flask import request
    • get: request.args.get()
    • post: request.form.get()
    • 上传文件:request.files.get(),获取到文件后使用.save(路径)保存
  • 返回json
    • 导入jsonify,可以直接使用jsonify(字典)
  • 重定向
    • 导入redirect,视图函数直接return redirect('要重定向的网址')
    • 导入url_for,使用return redirect(url_for('函数名'))反向解析进行重定向,如果函数有参数,直在url_for('函数名',参数=‘xxx’)
  • 自定义状态码
    • return 要返回的数据,'状态码 说明内容' return 'test code','789 err'
  • 请求钩子,通过装饰器形式实现
    • 在处理第一个请求前执行:before_first_request,使用时直接@app.before_first_request
    • 在每次请求前执行:before_request 使用同上
    • 在每次请求后执行:after_request 使用同上
    • 每次请求结束之后执行: teardown_request 使用同上
  • 状态保持
    • cookie 在客户端存储信息使用Cookie
      • 设置时导入from flask imoprt Flask,make_response
      • 设置:
        response = make_response('cookies set success')
        response.set_cookie('user_name','jams',max_age=3600) 以键值对的形式设置,max_age设置有效时长
      • 获取时使用request
        re_cookie = request.cookies.get('user_name')
    • session 在服务器端存储信息使用Session Session依赖于Cookie
      • 设置时导入from flask import Flask,session
        session['se_name'] = 'Liming'
      • 获取时直接使用session.get('se_name')
      • 设置session时必须先设置secret_key:app.secret_key = 'hjhjhsakjgyhweqoaa'
posted @ 2019-02-22 22:35  heyeege  阅读(148)  评论(0编辑  收藏  举报