3月5日 学习记录

flask中函数app.route()嵌套装饰器可能错误
1 | def atuh1(func): |
单装饰器装饰: 装饰器在装饰一个函数时,此函数将被装饰器内部函数替代,如果想暴露原本函数,可以使用装饰器@functools.wraps(func)
多装饰器装饰: 优先使用内部装饰器,逐层向上
1 | from flask import Flask |
@app.route() endpoint默认为函数名
两个函数使用相同函数装饰auth, 在不使用@functools.warps(func)的情况下,两个初始函数被装饰后,都将变为inner的属性,形成别名重复错误:AssertionError: View function mapping is ovwewriting an existing endpoint function: inner
flask蓝图
flask蓝图主要功能就是分类(Blueprint),不同功能函数放在不同文件中实现:
创建蓝图
1
xxx = Blueprint('xxx', __name__)
在主进程中引用蓝图
1
2from '/path' import xxx
app.register_blueprint(xxx, url_prefix='/x')url_prefix 添加前缀 使用: /x/xxx
Django的路由映射和Flask的蓝图有什么区别
flask:
flask是利用蓝图进行模块划分的,通过app装饰器注册模块蓝图,在主模块统一调用;
在flask中,路由是通过装饰器给每个视图函数提供的, 而且根据请求方式的不同可以一个url用于不同的作用。功能相似,但是底层实现不一样
Django:
- Django路由映射是通过路由正则匹配映射到每一个模块的
- 在django中,路由是浏览器访问服务器时,先访问的项目中的url,再由项目中的url找到应用中url,这些url是放在一个列表里,遵从从前往后匹配的规则。
- 标题: 3月5日 学习记录
- 作者: IntYou
- 创建于: 2023-03-05 17:34:24
- 更新于: 2023-03-09 11:33:54
- 链接: https://intyou.netlify.app/2023/03/05/3月5日学习记录/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。