Flask之路由系统
路由系统
路由的两种写法
1.第一种方法:
def index():
return render_template('index.html')
app.add_url_rule('/index', 'index', index) 2. 公司里一般用这种方式
@app.route('/login')
def login():
return render_template('login.html')
解析
1. 第一种方法中执行"add_url_rule"方法,这个方法里边需要的参数解析:
def add_url_rule(
self,
rule,
endpoint=None,
view_func=None,
provide_automatic_options=None,
**options
):
self:是当前这个app对象;
rule: 当前这个路由:'/login'
endpoint: 当前这个视图的别名;
view_func: 指定执行的视图函数 2.第二种:@app.route('/login'),第二种的这个方法其实内部都是调用了"add_url_rule"这个方法;内部实现都是一样的。
路由加载的源码流程
- 将url和函数打包成为 rule 对象
# rule = self.url_rule_class(rule, methods=methods, **options)
- 将rule对象添加到map对象中。
# self.url_map.add(rule)
- app.url_map = map对象
# self.url_map = self.url_map_class()
动态路由
@app.route('/login')
def login():
return render_template('login.html') @app.route('/login/<name>')
def login(name):
print(type(name))
return render_template('login.html') @app.route('/login/<int:name>')
def login(name):
print(type(name))
return render_template('login.html')
支持正则表达式的路由
from flask import Flask,render_template app = Flask(__name__) from werkzeug.routing import BaseConverter
class RegConverter(BaseConverter):
def __init__(self, map, regex):
super().__init__(map)
self.regex = regex
app.url_map.converters['regex'] = RegConverter @app.route('/index/<regex("\d+"):x1>')
def index(x1):
return render_template('index.html') if __name__ == '__main__':
app.run()
DEFAULT_CONVERTERS = {
"default": UnicodeConverter,
"string": UnicodeConverter,
"any": AnyConverter,
"path": PathConverter,
"int": IntegerConverter,
"float": FloatConverter,
"uuid": UUIDConverter,
}
1. flask中提供了这些动态路由的方法,针对不同的值有着不同的操作方法,装换成不同的类型值;
2. 并且flask也支持自定义的正则表达式的路由
Flask之路由系统的更多相关文章
- Flask最强攻略 - 跟DragonFire学Flask - 第七篇 Flask 中路由系统
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- Flask中路由系统以及蓝图的使用
一.Flask的路由系统 1.@app.route()装饰器中的参数 methods:当前URL地址,允许访问的请求方式 @app.route("/info", methods=[ ...
- Flask 的路由系统 FBV 与 CBV
Flask的路由系统 本质: 带参数的装饰器 传递函数后 执行 add_url_rule 方法 将 函数 和 url 封装到一个 Rule对象 将Rule对象 添加到 app.url_map(Map对 ...
- 源码解析flask的路由系统
源码解析flask的路由系统 当我们新建一个flask项目时,pycharm通常已经为项目定义了一个基本路由 @app.route('/') def hello_world(): return 'He ...
- 第七篇 Flask 中路由系统以及参数
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- 第七篇 Flask 中路由系统
1. @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route("/info", me ...
- 7,Flask 中路由系统
Flask中的路由系统 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道 ...
- flask框架路由系统
flask框架的url系统: flask框架的路由系统: flask框架的路由系统使用实例化的route方法来指定: 如: @app.route('/') route函数装饰器可以把一个函数绑定到对应 ...
- Flask 之路由系统
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
随机推荐
- Java基础知识面试题详解(2019年)
文章目录 1. 面向对象和面向过程的区别 2. Java 语言有哪些特点? 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 JVM JDK 和 JRE 4. Oracle JDK 和 Ope ...
- java基础: ArrayList集合应用, ArrayList增删改查详解,综合java基础实现学生管理系统,
1.ArrayList 集合和数组的区别 : 共同点:都是存储数据的容器 不同点:数组的容量是固定的,集合的容量是可变的 1.1 -ArrayList的构造方法和添加方法 public ArrayLi ...
- linux操作系统及常用命令
GUN:GUN is Not UnixGPL:General Public License.通用公共许可证,版权 Copyright,Copyleft 开源协议LGPL:lesserGPLv2GPLv ...
- mysql中sql行列转换
1.列转行 select class_id,MAX(CASE kemu when '语文' then score ELSE 0 end)as '语文' ,MAX(CASE kemu when '数学' ...
- 使用maven创建java项目是,jdk的版本默认为1.5,如何修改为1.8
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- Linux音频编程--使用ALSA库播放wav文件
在UBUNTU系统上使用alsa库完成了对外播放的wav文件的案例. 案例代码: /** *test.c * *注意:这个例子在Ubuntu 12.04.1环境下编译运行成功. * */ #inclu ...
- Sqoop(二)常用命令及常数解析
一.常用命令列举 二.命令及参数详解 1.数据库连接 2.import 3.export 4.hive
- Head First 设计模式 —— 05. 单例模式
全局变量的缺点 如果将对象赋值给一个全局变量,那么必须在程序一开始就创建好对象 P170 和 JVM 实现有关,有些 JVM 的实现是:在用到的时候才创建对象 思考题 Choc-O-Holic 公司使 ...
- dede 织梦的安装 出现dir
安装dede系统.(如果您已经安装,请跳过本步.)直接运行:http://您的域名/install如果没有出现该页面,而是出现了一个空白页面写着dir 那么请删除install文件夹中的 instal ...
- 20210105 - python自动化办公简介
新的一年开始了, 计划每周至少更新三篇博客. 人生苦短,如果不做改变,人生很快会过去!2021年寻求改变,加油! python自动化办公: 1.相关工具与环境的安装概要: 需要用到python(一种开 ...