首页 > 编程语言 >探索Flask接口路由技术:构建灵活可拓展的Python应用

探索Flask接口路由技术:构建灵活可拓展的Python应用

时间:2024-01-16 17:31:45浏览次数:36  
标签:Flask app URL Python user route 路由

霍格沃兹的测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。

什么是路由

路由是将 URL 地址与应用程序中的函数相映射的过程。当用户在浏览器中输入特定的 URL 地址时,Flask 会调用与该地址相匹配的函数并返回相应的结果。

路由的应用场景

在 Web 应用程序都通过路由技术使用 URL 链接来控制网页显示的内容,只要知道 URL 链接,即使没有主页导航也可以直接访问所需网页。

通过 Flask 实现路由

路由类型

实现方式

基本路由

@app.route('/')

动态路由

@app.route('/user/<username>')

限定类型

@app.route('/post/<int:post_id>')

在 Flask 中,可以使用 @app.route() 装饰器来定义路由。路由决定了用户请求的 URL 路径与对应的视图函数之间的关系。

基本路由

基本路由定义方式为:

from flask import Flask

# 创建 Flask 应用程序实例
app = Flask(__name__)

# 定义基本路由
@app.route("/")
def index():
    return "Home Page"

@app.route("/about")
def about():
    return "About Page"

# 运行应用程序
if __name__ == '__main__':
    app.run()

在上述示例中,@app.route('/') 和 @app.route('/about') 分别定义了根路径 '/' 和 /about 的路由。当用户访问这些路径时,Flask 会调用对应的视图函数并返回相应的内容。

@app.route('/') 访问地址为 http://127.0.0.1:5000/,@app.route('/about') 访问地址为 http://127.0.0.1:5000/about。

动态路由

URL 中某些地方存在可变部分,为动态的 URL,Flask 支持这种动态 URL。

动态路由是通过尖括号 <> 实现的,放在尖括号里面的部分为动态部分,即在装饰器 route 传入 <> 部分,定义视图函数时,将该 <> 里面的内容作为参数传入到函数里面即可。

比如路由 /user/Harry 后面想要根据不同的用户名,返回不同的数据。这种情况可以用变量来代替名字部分:@app.route('/user/<username>')

这时 username 传入不同的值时,比如依次传入 Harry、Ron、Hermione,那么对应的路由就变为:/user/Harry/user/Ron/user/Hermione

# 定义动态路由
@app.route("/user/<username>")
def user_info(username):
    return f"User {username} is select info."

访问:http://127.0.0.1:5000/user/Ron

查看服务端日志,会有一条返回信息:User Ron is select info.

限定类型

如果希望限定输入的动态字段的类型,可以使用 <类型:变量名> 来实现,例如如果希望某个字段只能是整数,那么可以写为 /user/<int:user_id>

# 限定类型的动态路由
# 类型限定为整型
@app.route("/user/<int:user_id>")
def user_id(user_id):
    # 展示给定的用户 ID,ID 为整型
    return f"User ID is {user_id}"

# 类型限定为 path(可以包含 /)
@app.route('/path/<path:sub_path>')
def show_subpath(sub_path):
    # 展示 path 后的子路由
    return f'Subpath is {sub_path}'

Flask 支持在路由上使用的类型有 int、float、string、path。path 类型是字符串的一种,不同的是它可以包含正斜线。

路由规则

Flask 的 URL 规则基于 Werkzeug 的路由模块。可以确保形成的 URL 是唯一的,并且基于 Apache 规定的先例。

@app.route('/about')
def about():
    return 'About Page'

@app.route('/hogwarts/')
def hello_hogwarts():
   return 'Hello Hogwarts'

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

这两个路由定义的例子看起来类似,其实是不一样的。

在第二个例子中,路由的尾部使用斜杠 (/)。因此,它成为一个规范的URL。这时 Flask 会自动进行重定向。当在浏览器的地址栏中不输入 / 时,会自动在尾部加上一个斜杠。也就是在浏览器的地址栏中输入 / 和不输入 /的效果是一样的。

而第一个例子中,路由的尾部没有 /。那么访问的时候,在浏览器的地址栏中不能输入 /,否则会产生 “Not Found” 的错误。这样可以保持 URL 唯一。

标签:Flask,app,URL,Python,user,route,路由
From: https://blog.51cto.com/u_15605684/9275540

相关文章

  • flask-study-004
    本篇博客记录学习和实践flask的request全局对象的属性和方法参考学习:https://zhuanlan.zhihu.com/p/6237553141.request的属性属性名解释示例form从post或者put请求解析的multidict(一键多值字典)argsmultidict,要操作的url中提交的参数,可以使用args属性。?ke......
  • Mygin实现简单的路由
    本文是Mygin第二篇目的:实现路由映射提供了用户注册静态路由方法(GET、POST方法)基于上一篇Mygin实现简单Http且参照Gin我使用了map数组实现简单路由的映射关系不同的method对应一个组,Gin框架初始化时map时初始化9个,因为支持的http.method刚好为9个packagehttp//Gin......
  • python pyqt6 QComboBox 设定下拉框背景颜色
    设定QComboBox的背景颜色,边框设定,以及下拉框的背景颜色以及边框设定,selection-background-color不生效可忽略 xxx_source=QComboBox(self.xxx_frame)xxx_source.setStyleSheet("QComboBox{background-color:transparent;color:transparent;border-......
  • 【python网络编程相关】 ----操作系统相关了解
    title:【python网络编程相关】----操作系统相关了解date:2024-01-1615:54:06updated:2024-01-1616:20:00description:【python网络编程相关】----操作系统相关了解cover: https://www.cnblogs.com/YZL2333/p/10444200.htmlhttps://home.cnblogs.com/u/......
  • Python常用的内置函数
    【一】什么是内置函数?内置函数就是Python给你提供的,拿来直接用的函数,比如print,input等。第1组(5个)abs,绝对值v=abs(-10)pow,指数v1=pow(2,5)#2的5次方2**5print(v1)sum,求和v1=sum([-11,22,33,44,55])#可以被迭代-for循环print(v1)divmo......
  • Python常用的内置函数
    【一】什么是内置函数?内置函数就是Python给你提供的,拿来直接用的函数,比如print,input等。第1组(5个)abs,绝对值v=abs(-10)pow,指数v1=pow(2,5)#2的5次方2**5print(v1)sum,求和v1=sum([-11,22,33,44,55])#可以被迭代-for循环print(v1)divmod......
  • 全局路由守卫
    需求:1.有一个登录页面和主页面2.没有登录无法访问主页面,并重定向到登录页面3.登录后可正常访问主页面 实现方式:router/index.js下书写:router.beforeEach((to,from,next)=>{//访问的是登录页面或sessionStorage内有值if(to.name=='login'||sessionSto......
  • Python常用的内置函数
    Python常用的内置函数【一】什么是内置函数?内置函数就是Python给你提供的,拿来直接用的函数,比如print,input等。截止到python版本3.6.2,一共提供了68个内置函数,具体如下第1组(5个)abs,绝对值v=abs(-10)pow,指数v1=pow(2,5)#2的5次方2**5print(v1)sum,求......
  • Python常用模块
    【一】re【二】time、datetime【1】表示时间模块(time/datetime)的三种方式在Python中,通常有这三种方式来表示时间:时间戳元组(struct_time)格式化的时间字符串:格式化的时间字符串(FormatString):‘1999-12-06’【2】time(1)导入时间模块importtime(2)时间戳(tim......
  • Python常用的内置函数
    【一】什么是内置函数?内置函数就是Python给你提供的,拿来直接用的函数,比如print,input等。截止到python版本3.6.2,一共提供了68个内置函数,具体如下第1组(5个)abs,绝对值v=abs(-10)pow,指数v1=pow(2,5)#2的5次方2**5print(v1)sum,求和v1=sum([-11,22,......