Flask - 配置和创建路由

目录

  • 装饰器
  • 配置文件
    • 配置
  • 创建路由
    • 第一种方式(常用)
    • 第二种方式

装饰器

  • 为什么要用装饰器 ?
    • 在不改变原函数的基础上, 对函数执行前后进行自定义操作.

原函数

def index(a):
    return a + 100

# 执行
v = index(2)
print(v)

# 返回函数名
print(index.__name__)

装饰器

def wapper(func):
    def inner(*args, **kwargs):
        print("---1---")
        return func(*args, **kwargs)
    return inner

@wapper
def index(a):
    return a + 100
  • @wapper的作用
    • 执行wapper函数, 将被装饰的函数当做参数
    • 将第一步的返回值, 重新赋值给新 index = wapper(index)
    • 这时的 print(index.__name__) 等于 inner

需求

  • 当函数被装饰之后, 使用print(index.__name__) 返回的依然是之前的函数名
    • 使用functools模块 : @functools.wraps(func)
def wapper(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        print("---1---")
        return func(*args, **kwargs)
    return inner

配置文件

  • app.config.from_object("python类或类的路径")
    • 比如 : app.config.from_object("settings.BaseConfig")

配置

  • 配置数据库 : DATABASE_URI = 'mysql://user@pro/foo'
  • 是否开启Debug模式 : DEBUG
  • SECRET_KEY : 设置秘钥

创建路由

第一种方式(常用)

  • @app.route('/index', methods=['GET', 'POST'])

  • 源码解析 :

    • app.route会返回一个函数 decorator.
def route(self, rule, **options):

    def decorator(f):
        endpoint = options.pop("endpoint", None)
        self.add_url_rule(rule, endpoint, f, **options)
        return f

    return decorator
  • f对应的是index
  • rule 对应的是 /index
  • options 对应的是 methods

执行流程

  1. 执行 @app.route('/index', methods=['GET', 'POST'])
  2. @decorator 立即执行decorator(index), 把index作为参数

第二种方式

app.add_url_rule('/order', view_func=index)

你可能感兴趣的:(Flask,flask)