python全栈开发day111-flask路由及其参数,Flask配置,蓝图,几个装饰器、闪现、send_file、jsonify

1.endpoint参数,解决视图函数重名问题(包括装饰后重名问题)

  http://www.cnblogs.com/eric-nirnava/p/endpoint.html

  • 每个应用程序app都有一个view_functions,这是一个字典,存储endpoint-view_func键值对。add_url_rule的第一个作用就是向view_functions中添加键值对(这件事在应用程序run之前就做好了)
  • 每个应用程序app都有一个url_map,它是一个Map类(具体实现在werkzeug/routing.py中),里面包含了一个列表,列表元素是Role的实例(werkzeug/routing.py中)。add_url_rule的第二个作用就是向url_map中添加Role的实例(它也是在应用程序run之前就做好了)
    {'static': <bound method _PackageBoundObject.send_static_file of <Flask 'myflask'>>, 'add.add': <function stu_add at 0x000000000399F0D0>, 'update.update': <function stu_update at 0x0000000003AC8730>, 'delete.delete': <function stu_delete at 0x0000000003AC8840>, 'reg.reg': <function View.as_view.<locals>.view at 0x0000000003934620>, 'hello_world': <function hello_world at 0x0000000003B1EA60>, 'login': <function login at 0x0000000003B1EAE8>, 'student_list': <function student_list at 0x0000000003B1EBF8>}
    Map([<Rule '/login' (POST, OPTIONS, GET, HEAD) -> login>,
     <Rule '/list' (POST, OPTIONS, GET, HEAD) -> student_list>,
     <Rule '/add' (POST, OPTIONS, GET, HEAD) -> add.add>,
     <Rule '/reg' (POST, OPTIONS, GET, HEAD) -> reg.reg>,
     <Rule '/' (OPTIONS, GET, HEAD) -> hello_world>,
     <Rule '/update/<sid>' (POST, OPTIONS, GET, HEAD) -> update.update>,
     <Rule '/delete/<sid>' (POST, OPTIONS, GET, HEAD) -> delete.delete>,
     <Rule '/static/<filename>' (OPTIONS, GET, HEAD) -> static>])
    View Code

     

2.Flask中的路由配置

  @app.route("/<int:age>",methods=("get",),endpoint='xxx')
  动态路由参数<age>

3.Flask的配置

  1) Flask的实例配置
    app.config.from_object(obj)
    class Obj:

      DEBUG=True,。。。、、

  2) Flask初始化配置
    app=Flask(__name__,template_folder.....)
    template_folder = "模板存放路径"  # 蓝图应用时在蓝图py文件在同一文件夹下
      static_folder = "静态文件存放路径"
    static_url_path = "/默认值是等于static_folder的名字" # 蓝图应用时path不能重复
    static_host .....

 

4.蓝图(Blueprint)
  

  bp = Blueprint("bulename",__name__)   # 与Flask实例一样传参  

  @bp.route("/") 为蓝图添加路由 方式与Flask实例路由一毛一样

  注册蓝图
  app.register_blueprint(bule.bp)

插拔机制

5.装饰器before_request、aftert_request、errorhandler(404)
  

@app.before_request 请求进入视图函数之前作出处理
@app.after_request 请求结束视图函数之后,返回客户端之前,作出处理
def after(response)
return response

be1-be2-af2-af1
be1-af2-af1

errorhandler(404) #定义错误请求的响应
def err(code_or_exp)
  

@app.errorhandler(404)
def errors(code_or_exception):
    # print(dir(arg),arg.name,arg.get_description())
    return redirect("/login")

# app.add_url_rule("/bo/<age>", methods=("GET", "POST"),endpoint="bofunc")
errorhandler

 

6.skip闪现(flash)

@app.route("/index")
def index():
    res = get_flashed_messages()
    if not res:
        res = [""]
    flash("你刚才访问了index")
    return render_template("index.html",msg=res[0])

@app.route("/home")
def index1():
    res = get_flashed_messages()
    if not res:
        res = [""]
    flash("你刚才访问了home")
    return render_template("index.html",msg=res[0])

if __name__ == '__main__':
    app.run()
flash

7.sendfile jsonify
  

1.form flask import send_file
flask send_file 打开文件并返回
send_file(文件路径)

2.from flask import jsonify
return jsonify({a:1})
打包一个 content-Type:application/json 返回给客户端
jsonify的配置在app["JSONIFY_MIMETYPE"] = ""

posted @ 2018-10-10 19:39  富0代  阅读(431)  评论(0编辑  收藏  举报
返回
顶部