zoukankan      html  css  js  c++  java
  • doraemon的python Flask框架 路由和配置

    2.Flask中的路由和配置

    2.1路由

    from flask import Flask
    app = Flask()

    @app.route("/login")
    route中的参数:
    rule   "/login" 路由地址
    methods     #允许进入视图函数的请求方式
    endponts    #Mapping 路由地址和endpoint - 路由地址和视图函数Mapping endpoint在同一个app中不能出现重复,默认值是视图函数名
    defaults    #默认路由参数
    strict_slashes #是否严格遵循路由匹配规则
    redirect_to #永久重定向 308 301
    动态参数路由 "/get_muisc/<filename>"
    @app.route("/get_muisc/<filename>" )
    def get_muisc(filename)
    return a
    可以分页,获取文件,解决分类,解决正则路由问题

     

    2.2 Flask初始化配置和实例配置

    初始化配置

    app = Flask(__name__,template_folder="templatess")

    template_folder="templatess" 模板文件存放路径
    static_folder 静态文件存放目录 默认值 是 static
    static_url_path 静态文件访问路径 默认值 是 / + static_folder 静态文件的存储目录
    @app.route("/futeng/<filename>")  #访问路径路径/futeng/<filename>
    def get_img(filename):
      filepath = os.path.join("static",filename) #存储路径static
      return send_file(filepath)

     

    实例化配置,另外单独使用一个配置文件

    import hashlib,time

    class DebugConfig(object):
       DEBUG = True
       SECRET_KEY = "#$%^&*($#$%^&*%$#$%^&*^%$#$%"
       PERMANENT_SESSION_LIFETIME = 3600   #失效时间 单位是秒
       SESSION_COOKIE_NAME = "I am Not Session" #存放在浏览器cookie中的session的名字


    class TestConfig(object):
       TESTING = True
       SECRET_KEY = hashlib.md5(f"{time.time()}#$%^&*($#$%^&*%$#$%^&*^%$#$%{time.time()}".encode("utf8")).hexdigest()
       PERMANENT_SESSION_LIFETIME = 360000
       SESSION_COOKIE_NAME = "#$%^&*($#$%^&*%$#$%^&*^%$#$%"

    应用

    run.py

    #导入文件
    app.config.from_object(TestConfig)

     

    2.3蓝图 Blueprint (app01)

    不能被run的Flask实例 不存在Config

    蓝图文件

    from flask import Blueprint

    bp = Blueprint("app01",__name__)  #蓝图的名字
    car_bp = Blueprint("app02",__name__,url_prefix="/car")  #url_prefix,访问地址的时候必须在路由前面加上/car才能访问

    @bp.route("/add_user")
    def add_user():
       return "添加用户"

    @bp.route("/find_user")
    def find_user():
       return "查看用户"

    @bp.route("/drop_user")
    def drop_user():
       return "删除用户"

    @bp.route("/up_user")
    def up_user():
       return "修改用户"

     

    蓝图的应用

    run.py

    #蓝图导入
    from *** import 蓝图名字
    app.register_blueprint(bp)

     

    2.4 特殊装饰器

    @app.before_request
    def be1():
       print("I am Be1")
       # return "第一个请求你就过不去" # 5种

    @app.before_request
    def be2():
       print("I am Be2")
       # return "第二个请求过不去了" # 5种


    @app.after_request
    def af1(res):
       print("I am af1")
       return res


    @app.after_request
    def af2(res):
       print("I am af2")
       return res

     

    @app.before_request 在请求进入视图函数之前 做出处理

    @app.after_request 在响应返回客户端之前,结束视图函数之后

    be+af 请求生命周期: 正常 be1 - be2 - vf - af2 - af1 异常 be1 - af2 - af1 只要有响应返回 , af全部执行

  • 相关阅读:
    SQL左右连接中的on and和on where的区别
    Eclipse项目左侧调整显示或者不显示路径
    Java中 Tomcat 是干什么的?
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    Oracle中判断(case when),截取(substr),位置(instr)用法
    Eclipse 隐藏已关闭的项目
    项目关闭和开启
    提交代码有冲突,解决方法
    OC基础:Date 分类: ios学习 OC 2015-06-22 19:16 158人阅读 评论(0) 收藏
    OC基础:block.字面量 分类: ios学习 OC 2015-06-22 19:08 155人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/doraemon548542/p/11863495.html
Copyright © 2011-2022 走看看