Pythonweb开发框架—Flask工程创建和@app.route使用详解
1.创建工程
如果pycharm是专业版,直接NewProject—>Flask

填写工程name和location后,点击右下角【create】,就会新建一个flask工程,工程里默认会建好一个templates文件夹、static文件夹、一个app.py文件
templates:存放html模板
static:存放不动态更改的文件,比如图片
app.py:启动入口

其中app.py中自动生成下面的代码
from flask import Flask'''
创建一个名为app的Flask实列,参数为当前模块名或者当前包名。表示使用当前模块名或者包名来确定应用程序的根目录
'''
app = Flask(__name__) '''
路由函数
'''
@app.route('/')
def hello_world(): # put application's code herereturn 'Hello World!''''
main函数,启动入口
'''
if __name__ == '__main__':app.run()
如果Pycharm是非专业版,可以建普通工程后,手动新建templates文件夹、static文件夹、app.py文件。
2.启动工程
- 方法一:右上角启动工程

- 方法二:直接运行app.py文件

当出现 http://127.0.0.1:5000,工程就启动成功了
工程启动后就会一直监听5000端口,监听到HTTP 请求后封装为 Request 对象,然后匹配路由接口,如匹配到执行视图函数,匹配不到返回404。
3.@app.route视图函数开发
3.1 静态url
- url路径是固定字符串
- 必须参数:rule
- 非必须参数:methods:http请求类型,默认为get,也可以是post,或者get和post同时支持
举例:

测试:

3.2 动态url
- url路径是一个动态值
- 必须参数:rule
- 非必须参数:methods
举例:

测试:

3.3.请求参数处理
- 导入模块:from flask import request
flask框架的request是用来存储http请求带过来的协议信息和参数的
- 查询参数:以字典的形式存储在args里面



- K=V的表单参数:以字典的形式存储在form中



- 参数为Json:以字典的形式存储在Json里



- JSON里包含json:以字典的形式存储在Json里


- request里的其他信息
files:记录了请求上传的文件,返回类似于字典的数据
method:记录了请求使用的HTTP方法
url:记录了请求中的URL地址
host:记录了请求的域名
headers:记录了请求的请求头信息,返回类似于字典的数据
3.4 返回
- 返回普通字符、数值
@app.route视图函数:

web调用测试:


- 返回html页面:一般用于前后端不分离的场景
第一步:先创建html页面:在工程的templates文件夹下新建html页面

Flask框架里面支持前端模板语言jinja2模板,这个模板支持读取python变量
第二步:编写html
语法:
变量用:{{}}
分支判断:

循环支持:

注释:

举例:
html:

@app.route视图函数:
from flask import Flask, render_template@app.route('/login/with/html')
def login_with_html():tuple=(1,2,3,4,5,6)dict={"name":"testtesttest003","id":2987654}return render_template('demo.html',name='测试测试测试测试测试',age=19,tuple=tuple,dict=dict)
web调用测试:

- 返回json:一般用于前后端分离的场景,前端用vue,nodejs
@app.route视图函数:
from flask import Flask, jsonify@app.route('/login/test/json')
def login_getjson():return jsonify({"code":"200","data":{"message":"Request successful"}})
web调用测试:

4.Flask和Django的比较
| 维度 | Flask | Django |
| 路由系统 | 由装饰器 @app.route 显式定义 | 在urls.py 中管理,通过正则表达式匹配 |
| 项目结构 | 结构单一,轻量灵活 | 结构严格约定 |
| 灵活性 | 高,可自由组合扩展 | 低,需遵循框架设计 |
| 性能 | 轻量,适合高并发微服务 | 较重,但优化后性能足够应对多数场景 |
| 开发速度 | 前期快,需求越复杂后期自行集成扩展慢 | 有很多内置工具,减少重复开发,前期慢后期快 |
| ORM | 无内置,需自行扩展 | 内置 ORM,支持数据库迁移和关系映射 |
| 学习难度 | 简单易上手 | 需要学习的内容较多,需学习整套约定 |
| 适用场景 | 适合小型应用、微服务 | 适合大型企业级应用、多人协作,快速原型开发 |
相关文章:
Pythonweb开发框架—Flask工程创建和@app.route使用详解
1.创建工程 如果pycharm是专业版,直接NewProject—>Flask 填写工程name和location后,点击右下角【create】,就会新建一个flask工程,工程里默认会建好一个templates文件夹、static文件夹、一个app.py文件 templates࿱…...
005 公网访问 docker rocketmq
文章目录 创建自定义网络创建NameServer容器创建Broker容器正式开始启动 Nameserver 容器启动 Broker 容器并关联 Nameserverdocker exec -it rmqbroker vi /etc/rocketmq/broker.conf检查 namesrv 解析检查 Broker 注册状态Nameserver 日志Broker 日志检查容器日志手动指定 Br…...
C++11中的右值引用和完美转发
C11中的右值引用和完美转发 右值引用 右值引用是 C11 引入的一种新的引用类型,用 && 表示。它主要用于区分左值和右值,并且可以实现移动语义,避免不必要的深拷贝,提高程序的性能。左值通常是可以取地址的表达式…...
txt 转 json 使用python语言
需求: 把如下的txt文档转成json输出 代码 import jsondef txt_to_json(input_file, output_file):data_list []with open(input_file, r, encodingutf-8) as f:for line in f:# 分割数据并去除换行符parts line.strip().split(,)print(f"{parts}")print(type(par…...
Android Logcat 高效调试指南
工具概览 Logcat 是 Android SDK 提供的命令行日志工具,支持灵活过滤、格式定制和实时监控,官方文档详见 Android Developer。 基础用法 命令格式 [adb] logcat [<option>] ... [<filter-spec>] ... 执行方式 直接调用(通过ADB守…...
【Linux】从入门到精通:Make与Makefile完全指南
欢迎来到 CILMY23 的博客 🏆本篇主题为:从入门到精通:Make与Makefile完全指南 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:C | C语言 | Linux | Python | 数据结构和算法 | 算法专题 …...
leetcode0014 最长公共前缀 -easy
1 题目:最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs [“flower”,“flow”,“flight”] 输出:“fl” 示例 2: 输入&a…...
【星云 Orbit-F4 开发板】07. 用判断数据尾来接收据的串口通用程序框架
【星云 Orbit-F4 开发板】用判断数据尾来接收一串数据的串口通用程序框架 摘要 本文介绍了一种基于STM32F407微控制器的串口数据接收通用程序框架。该框架通过判断数据尾来实现一串数据的完整接收,适用于需要可靠数据传输的应用场景。本文从零开始,详细…...
LLVM - 编译器前端 - 将源文件转换为抽象语法树(一)
一:概述 编译器通常分为两部分——前端和后端。在本文中,我们将实现编程语言的前端部分——即主要处理源语言的部分。我们将学习现实世界编译器使用的技术,并将其应用到我们的编程语言中。 本文将从定义编程语言的语法开始,最终生成一个抽象语法树(AST),这是代码生成的基…...
02_NLP文本预处理之文本张量表示法
文本张量表示法 概念 将文本使用张量进行表示,一般将词汇表示为向量,称为词向量,再由各个词向量按顺序组成矩阵形成文本表示 例如: ["人生", "该", "如何", "起头"]># 每个词对应矩阵中的一个向量 [[1.32, 4,32, 0,32, 5.2],[3…...
深圳SMT贴片加工核心工艺解析
内容概要 深圳作为全球电子制造产业的核心集聚区,其SMT贴片加工技术始终引领行业创新方向。本文聚焦深圳电子制造企业在高密度、微型化组件加工中的核心工艺体系,系统解析从锡膏印刷到成品检测的全流程关键技术。通过梳理SMT产线中设备参数设定、工艺条…...
P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair
P8720 [蓝桥杯 2020 省 B2] 平面切分--set、pair 题目 分析一、pair1.1pair与vector的区别1.2 两者使用场景两者组合使用 二、set2.1核心特点2.2set的基本操作2.3 set vs unordered_set示例:统计唯一单词数代码 题目 分析 大佬写的很明白,看这儿 我讲讲…...
突破传统:用Polars解锁ICU医疗数据分析新范式
一、ICU数据革命的临界点 在重症监护室(ICU),每秒都在产生关乎生死的关键数据:从持续监测的生命体征到高频更新的实验室指标,从呼吸机参数到血管活性药物剂量,现代ICU每天产生的数据量级已突破TB级别。传统…...
命名实体识别与文本生成算法
在自然语言处理(NLP)的浩瀚星空中,命名实体识别(Named Entity Recognition, NER)与文本生成算法如同两颗璀璨的星辰,各自闪耀,又相互辉映,共同推动着人工智能技术在语言理解与生成领…...
10.3 指针进阶_代码分析
代码分析 9. 指针和数组代码解析一维数组字符数组字符串二维数组 10. 指针代码分析eg1eg2eg3eg4eg5eg6eg7eg8 10.1 指针进阶_数组指针 10.2 指针进阶_函数指针 9. 指针和数组代码解析 数组名arr是首元素地址 例外: 1. sizeof(arr),计算整个数组的大小&…...
深入理解推理语言模型(RLM)
大语言模型从通用走向推理,万字长文解析推理语言模型,建议收藏后食用。 本文基于苏黎世联邦理工学院的论文《Reasoning Language Models: A Blueprint》进行整理,你将会了解到: 1、RLM的演进与基础:RLM融合LLM的知识广…...
在Nginx上配置并开启WebDAV服务的完整指南
在Nginx上配置并开启WebDAV服务的完整指南 如何在 Nginx 上开启 WebDAV 服务 要在 Nginx 上开启 WebDAV 服务,你需要配置 Nginx 以支持 WebDAV 请求。以下是详细的步骤: 1. 确保 Nginx 安装了 WebDAV 模块 Nginx 的 WebDAV 功能由 http_dav_module 模…...
大语言模型学习
大语言模型发展历程 当前国内外主流LLM模型 一、国外主流LLM LLaMA2 Meta推出的开源模型,参数规模涵盖70亿至700亿,支持代码生成和多领域任务适配57。衍生版本包括Code Llama(代码生成优化)和Llama Chat(对…...
夜天之书 #106 Apache 软件基金会如何投票选举?
近期若干开源组织进行换届选举。在此期间,拥有投票权的成员往往会热烈讨论,提名新成员候选人和治理团队的候选人。虽然讨论是容易进行的,但是实际的投票流程和运作方式,在一个成员众多的组织中,可能会有不少成员并不清…...
从Aurora看Xanadu可扩展模块化光量子计算机的现状与未来展望
从Aurora看Xanadu可扩展光量子计算机的现状与未来展望 一、引言 1.1 研究背景与意义 随着信息技术的飞速发展,经典计算机在许多领域取得了巨大的成功,但在面对一些复杂问题时,其计算能力逐渐接近极限。量子计算机作为一种新型计算设备,基于量子力学原理,能够实现并行计算…...
用PyTorch手把手实现PGD对抗训练:从FGM的‘一步到位’到‘小步快跑’的实战代码详解
用PyTorch手把手实现PGD对抗训练:从FGM的‘一步到位’到‘小步快跑’的实战代码详解 对抗训练已成为提升模型鲁棒性的核心技术之一。不同于FGM(Fast Gradient Method)的"一步到位"策略,PGD(Projected Gradie…...
别再怪PoE不稳定了!手把手教你排查网线、供电、配置三大坑(附真实监控项目踩坑实录)
PoE稳定性实战指南:从网线到供电的深度排查手册 凌晨三点,监控室突然响起警报——某重要区域的摄像头集体离线。值班工程师的第一反应往往是"设备又坏了",但真实情况可能藏在那些容易被忽略的细节里:一根劣质网线在低温…...
XUnity Auto Translator:打破语言壁垒的Unity游戏翻译解决方案
XUnity Auto Translator:打破语言壁垒的Unity游戏翻译解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过精彩的Unity游戏?面对日文、韩文或其他…...
构建全志Tina Linux Docker编译镜像:从环境配置到CI/CD实践
1. 项目概述:为什么我们需要一个专属的Docker编译镜像?如果你和我一样,长期在嵌入式Linux开发领域摸爬滚打,那么“环境搭建”这四个字,大概率是你开发周期里最耗时、也最令人头疼的环节之一。尤其是当我们面对像全志Ti…...
厂二代接班创业和继承怎么选择
在家族企业传承的大背景下,厂二代面临着接班创业和继承家业的艰难抉择。据统计,民企二代接班成功率不足 30%,这凸显了传承过程中的挑战与风险。上海章动企业咨询有限公司作为企二代、厂二代接班传承管理咨询的可信渠道,在这方面有…...
装上这个技能,让你的 OpenClaw 和 Hermes 变身私人旅行规划师
一句话说清楚给小龙虾和马装上 Voyago,以后你只需要说"帮我规划杭州两天一夜",它就会自动帮你查火车票、搜机票、找酒店、查门票、规划路线、搜小红书攻略、算预算,最终输出一份万字级的完整旅行方案——精确到每两个地点之间坐几号…...
使用workbuddy 30分钟搭建微信小程序
前言 今天发现一个超好用的工具WorkBuddy可以非常快速地进行搭建小程序,还有进行一些代码的修改,简直是一个开发小程序的好帮手,今天用一节很小的短篇介绍一下整个创建部署和搭建过程。 第一步下载workbuddy 创建小程序 首先需要下载work…...
深入GD32 CAN FD驱动:从寄存器配置到ISO 15765数据发送的代码逐行解析
GD32 CAN FD驱动开发实战:从寄存器配置到ISO 15765协议栈实现 在汽车电子和工业控制领域,CAN FD协议正逐步取代传统CAN总线成为高速通信的主流方案。GD32系列MCU凭借其出色的性价比和完整的外设支持,成为许多嵌入式开发者的首选。本文将深入剖…...
量子计算核心原理、技术路线与应用场景全解析
1. 量子计算:一场颠覆性的计算范式革命量子计算,这个词在科技圈已经火了很久,但很多人对它的理解可能还停留在“比超级计算机快无数倍”的模糊印象里。作为一名长期关注前沿技术的从业者,我亲眼见证了它从实验室里高深莫测的理论&…...
全球眼用缓释药市场调查:预计2032年将攀升至25.46亿美元
在全球人口老龄化加速与慢性眼病患病率持续攀升的背景下,眼用缓释药市场正迎来历史性增长窗口。据QYResearch(北京恒州博智国际信息咨询有限公司)最新统计,2025年全球眼用缓释药市场销售额已达15.00亿美元,预计2032年将…...
