首页 > 其他分享 >Flask - 动态路由和debug模式

Flask - 动态路由和debug模式

时间:2022-12-22 17:55:42浏览次数:28  
标签:__ name Flask app user debug 路由

一、前言

  参考https://www.cnblogs.com/poloyy/p/14994738.html

  • 前面几篇文章讲的路由路径都是固定的,就是一个路径和一个视图函数绑定,当访问这条路径时会触发相应的处理函数
  • 这样无法处理复杂的情况,比如常见的一个课程分类下有很多个课程,那么他们的 path 可能是 /course/class_1,/course/class_2,/course/class_3...仅最后的序号不同,其他部分都是相同的,如果每一条 path 都写一个单独的视图函数来处理,那复用性会很差,代码量也会很多
  • 所以咱们要使用动态路由,路由中的路径是一个包含有参数的模板,这样就可以匹配多条路径

二、静态路由

  静态路由的例子,静态路由存在的问题:三个视图函数的功能逻辑是相同的,存在明显的逻辑代码重复

from flask import Flask

app = Flask(__name__)


@app.route('/user/tom')
def show_user_tom():
    return 'My name is tom'


@app.route('/user/jerry')
def show_user_jerry():
    return 'My name is jerry'


@app.route('/user/mike')
def show_user_mike():
    return 'My name is mike'


if __name__ == '__main__':
    app.run()

三、动态路由

1、动态路由说明

Flask 中动态路由是指带有参数的页面路径,大概格式如下:/prefix/<参数> ,它是一个模板,可以匹配多条路径,将参数放置在符号 < > 之间

2、将上面静态路由优化成动态路由

from flask import Flask,request

app = Flask(__name__)

@app.route('/user/<name>')
def show_user(name):
    # Python 中的'%s'%用法:一种字符串格式化的语法, 基本用法是将值插入到%s占位符的字符串中
    # %s,表示格式化一个对象为字符,%(取代s的字符串)
    return '我的名字是:%s' % name

if __name__ == '__main__':
    app.run()
  • 匹配所有以 /user/ 开头的路径
  • 视图函数 show_user 有一个参数 name
  • 假设实际的路径是 /user/张三,那么会与 /user/<name> 匹配成功,并且将张三 存储到参数 name 中

3、转换器

在 Flask 中,动态路由的参数类型默认是 string,但是也可以指定其他类型,比如数字 int 等

以下代码定义了四条动态路由:

from flask import Flask

app = Flask(__name__)

@app.route('/user/<name>')
def show_user(name):
    return 'My name is %s' % name


@app.route('/age/<int:age>')
def show_age(age):
    return 'age is %d' % age


@app.route('/price/<float:price>')
def show_price(price):
    return 'price is %f' % price


@app.route('/path/<path:name>')
def show_path(name):
    return 'path is %s' % name


if __name__ == '__main__':
    app.run()

/age/<int:age> postman 发起请求的结果

 

 注:一个动态路由可以包含多个参数

@app.route('/all/<path:path>/name/<string:name>/age/<int:age>/price/<float:price>')
def show_all(name, path, age, price):
    return f"path is {path}\nname is {name}\nage is {age}\nprice is {price}"

四、Flask 的 Debug 模式

1、Flask 程序可以运行在 Debug 模式下,Debug 模式提供了如下功能:

1)当 Flask 程序出现错误时,在浏览器中提示错误的详细信息

2)修改 Flask 程序代码后,Flask 程序会自动重新加载,不需要重启 Flask 程序,即可在浏览器中看到修改后的效果

2、开启debug模式:加个 debug = True 就好啦

 3、debug 模式开启后的控制台输出:Debug mode: on,表示 Flask 程序已经进入了调试模式

标签:__,name,Flask,app,user,debug,路由
From: https://www.cnblogs.com/Chilam007/p/16995948.html

相关文章

  • Vue隐藏导航栏中的部分路由
    以登录界面为例,当登录之后,页面上就不应仍出现“登录”的菜单栏1、在login菜单栏中使用v-show="$route.name!=='login'"  2、在route中需设置name,因为v-show是通过......
  • VUE3项目中的Router路由配置
    一、安装路由如果新建项目的时候已经有选择了Router选项就不需要再次安装了npminstallvue-router二、src目录下新增router文件夹,并在文件夹中新建index.ts文件impor......
  • Vue路由加上项目名称
    1、在路由的base中加上项目名称  2、url重写应为 ......
  • ThinkPHP5.1路由改进
    thinkphp/library/think/route/Rule.php第794行:protectedfunctiondispatch($request,$route,$option){if($routeinstanceof\Closure){......
  • 基于 Dubbo-Admin 实现根据请求条件路由
    Dubbo提供动态创建条件路由的服务治理能力,可以在无需重启应用的情况下,根据请求发起方、请求的方法条件路由。Dubbo可以通过XML配置,注解配置,动态配置实现动态根据请求条件路......
  • 基于 Dubbo-Admin 实现根据请求条件路由
    Dubbo提供动态创建条件路由的服务治理能力,可以在无需重启应用的情况下,根据请求发起方、请求的方法条件路由。Dubbo可以通过XML配置,注解配置,动态配置实现动态根据请求条件......
  • .net 6 全局路由扩展
    1、先定义一个类,用来实现IApplicationModelConvention 接口///<summary>///全局路由前缀配置///</summary>publicclassRouteConvention:IApplic......
  • .net core web api 路由约束
    路由约束在传入URL发生匹配时执行,URL路径标记为路由值。路径约束通常检查通过路径模板关联的路径值,并对该值是否为可接受做出对/错决定。某些路由约束使用路由值以外......
  • 将路由器从弱电箱里解放出来
    由于家里各个房间的网线的汇聚口是弱电箱,我们一般就把路由器放到弱电箱中,但是随着路由器性能越来越强大,发热也是越来越强,弱电箱已经不适合放路由器了,并且把路由器放弱电箱......
  • [react] 路由
    文章目录​​1.相关理解​​​​1.1.SPA的理解​​​​1.2.路由的理解​​​​1.2.1什么是路由?​​​​1.2.2路由分类​​​​2.react-router-dom相关API​​​​2.1......