路由系统

  • 路由的两种写法

    1. 1.第一种方法:
    2. def index():
    3. return render_template('index.html')
    4. app.add_url_rule('/index', 'index', index)
    5. 2. 公司里一般用这种方式
    6. @app.route('/login')
    7. def login():
    8. return render_template('login.html')

    解析

    1. 1. 第一种方法中执行"add_url_rule"方法,这个方法里边需要的参数解析:
    2. def add_url_rule(
    3. self,
    4. rule,
    5. endpoint=None,
    6. view_func=None,
    7. provide_automatic_options=None,
    8. **options
    9. ):
    10. self:是当前这个app对象;
    11. rule: 当前这个路由:'/login'
    12. endpoint: 当前这个视图的别名;
    13. view_func: 指定执行的视图函数
    14. 2.第二种:@app.route('/login'),第二种的这个方法其实内部都是调用了"add_url_rule"这个方法;内部实现都是一样的。
  • 路由加载的源码流程

    1. - url和函数打包成为 rule 对象
    2. # rule = self.url_rule_class(rule, methods=methods, **options)
    3. - rule对象添加到map对象中。
    4. # self.url_map.add(rule)
    5. - app.url_map = map对象
    6. # self.url_map = self.url_map_class()
  • 动态路由

    1. @app.route('/login')
    2. def login():
    3. return render_template('login.html')
    4. @app.route('/login/<name>')
    5. def login(name):
    6. print(type(name))
    7. return render_template('login.html')
    8. @app.route('/login/<int:name>')
    9. def login(name):
    10. print(type(name))
    11. return render_template('login.html')
  • 支持正则表达式的路由

    1. from flask import Flask,render_template
    2. app = Flask(__name__)
    3. from werkzeug.routing import BaseConverter
    4. class RegConverter(BaseConverter):
    5. def __init__(self, map, regex):
    6. super().__init__(map)
    7. self.regex = regex
    8. app.url_map.converters['regex'] = RegConverter
    9. @app.route('/index/<regex("\d+"):x1>')
    10. def index(x1):
    11. return render_template('index.html')
    12. if __name__ == '__main__':
    13. app.run()
  1. DEFAULT_CONVERTERS = {
  2. "default": UnicodeConverter,
  3. "string": UnicodeConverter,
  4. "any": AnyConverter,
  5. "path": PathConverter,
  6. "int": IntegerConverter,
  7. "float": FloatConverter,
  8. "uuid": UUIDConverter,
  9. }
  10. 1. flask中提供了这些动态路由的方法,针对不同的值有着不同的操作方法,装换成不同的类型值;
  11. 2. 并且flask也支持自定义的正则表达式的路由

Flask之路由系统的更多相关文章

  1. Flask最强攻略 - 跟DragonFire学Flask - 第七篇 Flask 中路由系统

    Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...

  2. Flask中路由系统以及蓝图的使用

    一.Flask的路由系统 1.@app.route()装饰器中的参数 methods:当前URL地址,允许访问的请求方式 @app.route("/info", methods=[ ...

  3. Flask 的路由系统 FBV 与 CBV

    Flask的路由系统 本质: 带参数的装饰器 传递函数后 执行 add_url_rule 方法 将 函数 和 url 封装到一个 Rule对象 将Rule对象 添加到 app.url_map(Map对 ...

  4. 源码解析flask的路由系统

    源码解析flask的路由系统 当我们新建一个flask项目时,pycharm通常已经为项目定义了一个基本路由 @app.route('/') def hello_world(): return 'He ...

  5. 第七篇 Flask 中路由系统以及参数

    Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...

  6. 第七篇 Flask 中路由系统

    1. @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route("/info", me ...

  7. 7,Flask 中路由系统

    Flask中的路由系统 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道 ...

  8. flask框架路由系统

    flask框架的url系统: flask框架的路由系统: flask框架的路由系统使用实例化的route方法来指定: 如: @app.route('/') route函数装饰器可以把一个函数绑定到对应 ...

  9. Flask 之路由系统

    Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...

随机推荐

  1. 利用Java Flight Recorder(JFR)诊断timing及内存问题

    Java Flight Recorder(JFR), 以下简称JFR,请注意这个只有Oracle JDK 1.7(7u40)或以上版本才有, OpenJDK木有这东西. 启用: Java命令行启动参数 ...

  2. 华为Mate20 Adb驱动失败

    今天拿到同事一台华为Mate20,准备装个包,结果发现adb一直 no devices,AndroidStudio当然也显示 no connected devices 开发者模式也打开了,USB调试也 ...

  3. C# IAsyncEnumerable Linq使用

    NET Core 3.0和C# 8.0最激动人心的特性之一就是IAsyncEnumerable<T>(也就是async流).但它有什么特别之处呢?我们现在可以用它做哪些以前不可能做到的事? ...

  4. Blogs实现侧边公告栏设置

    说明:只需要在博客侧边栏公告(支持HTML代码) (支持 JS 代码)里面添加如下代码 #1.博客运行时长统计 <!--博客运行时长显示开始--!> <div id="sh ...

  5. Android自定义ViewGroup-入门

    1.效果 2步骤 自定义ViewGroup的步骤是 1.1测量onMeasure /** * 获取子view的个数 * 逐个测量其宽高 得到整个ViewGroup的宽高 * * @param widt ...

  6. Android驱动学习-app调用内核驱动过程(驱动框架回顾)

    考研已经过去了,android驱动的学习也断了半年多了,现在重新捡起来学习,回顾一下Android驱动的大体框架. Android系统的核心是java,其有一个David虚拟机.Android-app ...

  7. JVM——GC(垃圾回收)算法

    一.垃圾回收的基本概念 垃圾回收(GC,Garbage Collection),指内存中不会再被使用的对象清理掉. 垃圾回收有很多种算法:如引用计数法.标记压缩法.复制算法.分代/分区的思想 二.垃圾 ...

  8. INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 的使用和区别

    INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN ...

  9. [每日一题]面试官问:Async/Await 如何通过同步的方式实现异步?

    关注「松宝写代码」,精选好文,每日一题 ​时间永远是自己的 每分每秒也都是为自己的将来铺垫和增值 作者:saucxs | songEagle 一.前言 2020.12.23 日刚立的 flag,每日一 ...

  10. 循序渐进VUE+Element 前端应用开发(32)--- 手机短信动态码登陆处理

    在一些系统中,有时候用户忘记密码,可以通过向自己手机发送动态验证码的方式实现系统登录功能.本篇随笔介绍如何结合后端ABP框架的短信发送和缓存模块的处理,实现手机短信动态码登陆处理. 一般的登录方式,分 ...