flask简单路由(视图函数)

news/2025/9/17 19:44:45/文章来源:https://www.cnblogs.com/guixiangyyds/p/19097422

简单路由(视图函数)

简单返回html

@app.route('/tmp')
def tmp_page():  # 函数名为tmp_page,对应url_for('tmp_page')return render_template('tmp.html')@app.route('/Custom_routing')
def Custom_routing_page():  return render_template('/Custom_routing/index.html')
# Custom_routing

post请求路由(接受前端数据类型)

@app.route('/route_message_parameter/message_form', methods=['POST'])
def route_message_parameter_message_form():# 处理POST请求try:name = request.form.get('name')location = request.form.get('location')age = request.form.get('age')if not name or not location or not age:return "请填写所有字段", 400return f'你好, {name},你来自{location},你今年{age}岁。'except Exception as e:return f'发生错误: {str(e)}', 400

自定义路由

采用继承的方法

class DateConverter(BaseConverter):def to_python(self, value):return datetime.strptime(value, '%Y-%m-%d')def to_url(self, value):return value.strftime('%Y-%m-%d')
# 注册自定义转换器,现在转换器名字叫date
app.url_map.converters['date'] = DateConverter
@app.route('/Custom_route/date_event/<date:custom_date>')
def show_date_event(custom_date):# 现在custom_date是一个datetime对象print(custom_date)return f'今天是{custom_date.strftime("%Y-%m-%d")},欢迎来到自定义路由!'

在路由内部也能预设一些参数

@app.route('/generate_url')
def generate_url():specific_date = datetime(2024, 6, 15)return url_for('show_date_event', custom_date=specific_date)

路由内部也可以用regex正则表达式

# regex正则表达式路由
class RegexConverter(BaseConverter):def __init__(self,url_map,regex):# 重写父类方法super(RegexConverter,self).__init__(url_map)# 原始的 BaseConverter 没有存储正则表达式的机制,我们需要自己保存:(说以有这一步)self.regex = regex  #保存正则表达式def to_python(self,value):print('你好,这里调用了to_python'+value)return value
app.url_map.converters['my_cv_regex'] = RegexConverter
@app.route("/user/<my_cv_regex(r'1[3456789]\d{9}'):user_id>")
def get_user(user_id):if not re.match(r'1[3456789]\d{9}', user_id):return None #其实这边return不会执行到return f"格式正确,用户ID: {user_id}"

异常捕获

一般我们用abort()抛出异常

@app.route("/user/<my_cv_regex(r'1[3456789]\d{9}'):user_id>")
def get_user(user_id):if not re.match(r'1[3456789]\d{9}', user_id):abort(404)  # 如果不匹配,返回404错误return None #其实这边return不会执行到# try-except捕获异常try:if re.match(r'1[3456789]\d{9}', user_id):print(f"格式正确,用户ID: {user_id}")return render_template('Custom_routing/user.html', user_id=user_id)# 我这边没有建立user.html模板,所以会报错让except捕获400,我没处理是为了和404对比except Exception as e:return f"发生错误: {str(e)}", 400

你可以使用errorhandler自定义处理异常,你可以抛出一个页面也可以直接return你要表达的语句

@app.errorhandler(404)
def page_not_found(e):return render_template('404.html'), 404

如果说程序异常崩溃,类似于无法找到渲染页面

我们就用try-except捕获异常处理

前端js如何联系app.py

下面是一个简单的前端逻辑处理

他的功能很简单:对post传递name,location,age以及判断用户输入

      try {// 发送数据到服务器const response = await fetch('/route_message_parameter/message_form', {method: 'POST',headers: {'Content-Type': 'application/x-www-form-urlencoded',},body: new URLSearchParams({'name': name,'location': location,'age': age})});if (response.ok) {const message = await response.text();document.getElementById('messageText').textContent = message;document.getElementById('result').style.display = 'block';} else {throw new Error('服务器返回错误');}} catch (error) {alert('提交失败,请稍后重试: ' + error.message);}});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/906758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】拉格朗日插值

EZ、什么是拉格朗日插值? 众所周知,\(n+1\) 个点可以唯一确定一个 \(n\) 次多项式。 拉格朗日插值法要解决的就是给定 \(n+1\) 个点确定一个多项式 \(f(x)\),求出在自变量 \(x=k\) 时多项式的取值。 拉格朗日插值法的思想和 CRT 非常像——把每一个维度独立拆开来。 考虑对一…

一种基于动作指令交互的动态活体检测技术,提升人脸识别安全性

在当今数字化时代,人脸识别技术已广泛应用于金融支付、门禁考勤、手机解锁等关键场景,其便捷性深受用户青睐。然而,随之而来的安全风险也日益凸显:高精度的照片、屏幕翻拍、甚至3D面具等攻击手段层出不穷,令传统的静态人脸识别技术面临严峻挑战。为了构筑更加坚固的安全防…

[系统] Windows 已有office版本和visio不兼容的解决方案

最近IC相关论文想用VISIO来画图,但是遇到了如下痛点:VISIO软件的安装必须与现有Office一致,例如现有word等均为32bit,VISIO也必须使用32bit的安装包; 同为32/64bit安装时报错“Office 16 Click-to-Run Extensibility Component”,这种情况需要输入regedit,打开注册表,依…

CF 2127F Hamed and AghaBalaSar

通过枚举破除限制,贡献拆分,等价思考,容斥怎么拆贡献又把自己拆乱了,我也是完蛋了。 首先考虑这个 \(f(a)\) 是什么。 发现跳(仅限第一个操作)的时候形如 \(x\to nxt(x)\to nxt(nxt(x))\to \cdots\),贡献就为 \((a_{nxt(x)} - a_x) + (a_{nxt(nxt(x))} - a_{nxt(x)})\)。…

AT_agc055_b [AGC055B] ABC Supremacy

一眼为学了 trick 不会用。 这种题考虑钦定代表元两边往中间靠。 你思考一下发现任意一个 \(ABC, BCA, CAB\) 可以在序列里任意乱跑,于是你可以把起始状态和最终状态的这种东西全部提前,我们只需要看剩下的部分是否一样就好。 属于是脑电波题。

“Sequential Thinking MCP Server 和codex等AI工具本身任务拆解功能对比

从你提供的文件内容来看,这个工具是一个名为“Sequential Thinking MCP Server”的工具,它用于通过结构化的思考过程解决问题。以下是对它与Codex或Claude Code CLI本身任务拆解功能的不同之处的分析: 功能定位Sequential Thinking MCP Server:专注于通过动态和反思性的思考…

基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025

基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courie…

网易伏羲:当算法遇见社交,解码游戏世界的连接密码

日前,2025游戏安全与创新大会圆满召开,大会以“AI融合创新”与“全链路安全防护”为双主线,聚焦游戏策划与运营核心问题,深度解析AI与游戏结合的提效、玩法及体验升级路径;同时直面开发、运营、发行、支付、出海等阶段的关键挑战,涵盖作弊、合规、欺诈等议题,助力从业者…

在 CentOS 7 上安装Nginx和配置http代理

1. 安装 EPEL 仓库 NGINX 不在 CentOS 的默认仓库中,因此首先需要安装 EPEL(Extra Packages for Enterprise Linux) 仓库。sudo yum install epel-release2. 安装 NGINX 通过 yum 包管理工具安装 NGINX。sudo yum install nginx3. 启动 NGINX 服务sudo systemctl start ngin…

题解:P2624 [HNOI2008] 明明的烦恼

题解:P2624 [HNOI2008] 明明的烦恼 不会 $prufer$ 序列的请右转树的计数,先将 $prufer$ 序列掌握再做这题。 设有 $n$ 个节点,$deg_i$ 为每个节点的度数,由上题可得,此时可能的无根树的方案为: $$\frac{(n-2)!}{\prod_{i=1}^{n}(deg_i-1)!}$$ 但是这题只给了我们部分节点…

在AI技术快速实现创想的时代,挖掘新需求成为核心竞争力——某知名DevOps学习平台需求洞察

该篇文章无摘要a.内容描述 该项目是一个结构化的DevOps学习资源,旨在帮助用户建立DevOps基础知识的系统化理解。核心功能定位是通过90天的学习计划,系统性地覆盖DevOps原则、流程和工具链的关键领域,包括DevOps基础、DevSecOps安全主题以及社区分享内容。 关键应用场景包括:…

Windows Powershell 获取版本version

前言全局说明一、 1.源码 $PSVersionTable.PSVersion2.结果免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。参考、来源: https://www.cnblogs.com/music-liang/p/18813922 作者:悟透原文链接:https://www.cnblogs.com/wutou/p/19097392来源:博…

XXL-JOB (1)

XXL-JOB (1)# 1 测试

公益站Agent Router注册送200刀额度竟然是真的

昨天看到说Agent Router邀请注册送100美刀,我就点了别人的链接,使用github注册了一个,确实得到了额度。但是我去聊天那里,发现会有错误,以为这个不好用:但是今天测试了一下在Claude Code确实能用,而且速度也还可以!!感兴趣的朋友也快来试试吧!! 邀请链接:https://a…

数据集中valid的作用

简单来说,valid(或 val)文件夹的存在是为了在模型训练过程中,定期、独立地评估模型的性能,以便进行模型调优、防止过拟合和选择最佳模型。它是机器学习工作流中至关重要的一环。 一般的数据集结构:1. Train(训练集)目的:这是模型“学习”所用的主要数据。模型通过反复…

深入 RocketMQ 核心源码:从环境搭建到高可用设计的全方位解析

深入 RocketMQ 核心源码:从环境搭建到高可用设计的全方位解析 在分布式系统中,消息队列是实现异步通信、解耦服务与削峰填谷的关键组件,而 RocketMQ 凭借其高吞吐、低延迟与高可用的特性,成为众多企业的首选。本文将从源码角度出发,带大家一步步揭开 RocketMQ 的神秘面纱,…

从零到顶会:NLP科研实战手册 - 实践

从零到顶会:NLP科研实战手册 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important;…

肝不好能喝酒吗

一般肝脏不好的患者不建议喝酒,可能会加重不适症状,影响健康。 肝脏是人体的重要器官,负责处理和代谢许多物质。如果肝脏不健康或受损,饮酒可能会产生负面影响,并导致一系列不适症状,甚至加重肝脏疾病。因此肝脏不好的人群不建议饮酒,以免对身体健康造成不良影响。 酒精…

ROS中如何将日志格式设置为行号的形式

export RCUTILS CONSOLE OUTPUT FORMAT=[{function name}:{line_number}]:{message}

USB相关的sysfs文件(重要的)【转】

https://www.cnblogs.com/linhaostudy/p/18388902 阅读目录前言 目录内容详解常见的 USB 相关目录及其含义1. /sys/bus/usb 目录下的含义1.1 /sys/bus/usb/devices/usb11-0:1.0 1-1.1:1.0结构图 设备信息bDeviceClass version busnum & devnum dev bMaxPower idVendor &…