当前位置: 首页 > news >正文

Flask--路由配置

文章目录

  • 前言
  • 一、路由
  • 二、URL变量
    • 1、变量规则
    • 2、唯一的 URL / 重定向行为
    • 3、URL 构建


前言

通过URL访问一个网页,使用 route() 装饰器把函数绑定到 URL

一、路由

使用 route() 装饰器把函数绑定URL示例:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello, World'


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

运行flask后,可打开本地路径进行访问

访问路径:http://127.0.0.1:5000/
在这里插入图片描述

访问路径:http://127.0.0.1:5000/hello
在这里插入图片描述

二、URL变量

1、变量规则

通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。标记的部分会作为关键字参数传递给函数。通过使用 converter:variable_name ,可以选择性的加上一个转换器,为变量指定规则

from markupsafe import escape
from flask import Flask
app = Flask(__name__)

@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return f'User {escape(username)}'

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return f'Post {post_id}'

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
    # show the subpath after /path/
    return f'Subpath {escape(subpath)}'


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

url支持的变量类型:

类型说明
string(缺省值) 接受任何不包含斜杠的文本
int接受正整数
float接受浮点数
path类似 string ,但可以包含斜杠
uuid接受 UUID 字符串

访问路径http://127.0.0.1:5000/user/盘盘
在这里插入图片描述

2、唯一的 URL / 重定向行为

代码如下(示例):

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

projects 的 URL 是中规中矩的,尾部有一个斜杠,看起来就如同一个文件夹。访问一个没有斜杠结尾的 URL ( /projects )时 Flask 会自动进行重定向,自动在尾部加上一个斜杠( /projects/ )

about 的 URL 没有尾部斜杠,因此其行为表现与一个文件类似。如果访问这个 URL 时添加了尾部斜杠(/about/ )就会得到一个 404 “未找到” 错误。这样可以保持 URL 唯一,并有助于搜索引擎重复索引同一页面

3、URL 构建

url_for() 函数用于构建指定函数的 URL。 它把函数名称作为第一个 参数。它可以接受任意个关键字参数,每个关键字参数对应 URL 中的变量

from flask import url_for

app = Flask(__name__)

@app.route('/')
def index():
    return 'index'

@app.route('/login')
def login():
    return 'login'

@app.route('/user/<username>')
def profile(username):
    return f'{username}\'s profile'

with app.test_request_context():
    print(url_for('index'))
    print(url_for('login'))
    print(url_for('login', next='/'))
    print(url_for('profile', username='John Doe'))
/
/login
/login?next=/
/user/John%20Doe

相关文章:

  • Linux定时器
  • iNFTnews | 一词解答区块链技术普及的制胜关键
  • 京准,PTP时间同步服务器在运营商通信网应用
  • 判断数组类型的方法(Array.isArray)以及Math数字对象
  • zemax---Tangential plane, meridian plane and sagittal plane(切线面,子午面与弧矢面)(完结)
  • Java配置42-配置redis高可用(sentinel监控)
  • 共话龙蜥:中国操作系统到底有没有角力世界舞台的实力?
  • vue独立提供模板下载功能
  • 怎么判断MES系统好不好?MES又是如何帮企业省钱的?
  • 数据治理:为什么不见BI作关联分析
  • 聚氨基酯偶联牛血清白蛋白/人血清白蛋白/卵清白蛋白纳米粒PAE-BSA/HSA/OVA(合成路线)
  • 应用开发类API推荐
  • sonar是一款静态代码质量分析工具
  • EN 14782建筑金属结构产品—CE认证
  • Leetcode 376. 摆动序列
  • [Vue CLI 3] 配置解析之 css.extract
  • 【Amaple教程】5. 插件
  • docker容器内的网络抓包
  • Java 网络编程(2):UDP 的使用
  • Magento 1.x 中文订单打印乱码
  • mysql 5.6 原生Online DDL解析
  • v-if和v-for连用出现的问题
  • Vue全家桶实现一个Web App
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 复习Javascript专题(四):js中的深浅拷贝
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 工作手记之html2canvas使用概述
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 计算机常识 - 收藏集 - 掘金
  • ------- 计算机网络基础
  • 讲清楚之javascript作用域
  • 使用Swoole加速Laravel(正式环境中)
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #include<初见C语言之指针(5)>
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (一)SpringBoot3---尚硅谷总结
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .net下的富文本编辑器FCKeditor的配置方法
  • @取消转义
  • [AutoSar]BSW_Com02 PDU详解
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [CDOJ 838]母仪天下 【线段树手速练习 15分钟内敲完算合格】
  • [ES-5.6.12] x-pack ssl
  • [Excel]如何找到非固定空白格數列的條件數據? 以月份報價表單為例
  • [HTML]Web前端开发技术29(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [iOS]-NSTimer与循环引用的理解
  • [javaSE] 数据结构(二叉查找树-插入节点)
  • [jobdu]不用加减乘除做加法
  • [Json.net]快速入门