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

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的比较

维度FlaskDjango
路由系统由装饰器 @app.route 显式定义在urls.py 中管理,通过正则表达式匹配
项目结构结构单一,轻量灵活结构严格约定
灵活性高,可自由组合扩展低,需遵循框架设计
性能轻量,适合高并发微服务较重,但优化后性能足够应对多数场景
开发速度前期快,需求越复杂后期自行集成扩展慢有很多内置工具,减少重复开发,前期慢后期快
ORM无内置,需自行扩展内置 ORM,支持数据库迁移和关系映射
学习难度简单易上手需要学习的内容较多,需学习整套约定
适用场景适合小型应用、微服务适合大型企业级应用、多人协作,快速原型开发

相关文章:

Pythonweb开发框架—Flask工程创建和@app.route使用详解

1.创建工程 如果pycharm是专业版,直接NewProject—>Flask 填写工程name和location后,点击右下角【create】,就会新建一个flask工程,工程里默认会建好一个templates文件夹、static文件夹、一个app.py文件 templates&#xff1…...

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 引入的一种新的引用类型,用 && 表示。它主要用于区分左值和右值,并且可以实现移动语义,避免不必要的深拷贝,提高程序的性能。左值通常是可以取地址的表达式&#xf…...

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 提供的命令行日志工具&#xff0c;支持灵活过滤、格式定制和实时监控&#xff0c;官方文档详见 Android Developer。 基础用法 命令格式 [adb] logcat [<option>] ... [<filter-spec>] ... 执行方式 直接调用&#xff08;通过ADB守…...

【Linux】从入门到精通:Make与Makefile完全指南

欢迎来到 CILMY23 的博客 &#x1f3c6;本篇主题为&#xff1a;从入门到精通&#xff1a;Make与Makefile完全指南 &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;C | C语言 | Linux | Python | 数据结构和算法 | 算法专题 &#x1…...

leetcode0014 最长公共前缀 -easy

1 题目&#xff1a;最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&a…...

【星云 Orbit-F4 开发板】07. 用判断数据尾来接收据的串口通用程序框架

【星云 Orbit-F4 开发板】用判断数据尾来接收一串数据的串口通用程序框架 摘要 本文介绍了一种基于STM32F407微控制器的串口数据接收通用程序框架。该框架通过判断数据尾来实现一串数据的完整接收&#xff0c;适用于需要可靠数据传输的应用场景。本文从零开始&#xff0c;详细…...

LLVM - 编译器前端 - 将源文件转换为抽象语法树(一)

一:概述 编译器通常分为两部分——前端和后端。在本文中,我们将实现编程语言的前端部分——即主要处理源语言的部分。我们将学习现实世界编译器使用的技术,并将其应用到我们的编程语言中。 本文将从定义编程语言的语法开始,最终生成一个抽象语法树(AST),这是代码生成的基…...

02_NLP文本预处理之文本张量表示法

文本张量表示法 概念 将文本使用张量进行表示,一般将词汇表示为向量,称为词向量,再由各个词向量按顺序组成矩阵形成文本表示 例如: ["人生", "该", "如何", "起头"]># 每个词对应矩阵中的一个向量 [[1.32, 4,32, 0,32, 5.2],[3…...

深圳SMT贴片加工核心工艺解析

内容概要 深圳作为全球电子制造产业的核心集聚区&#xff0c;其SMT贴片加工技术始终引领行业创新方向。本文聚焦深圳电子制造企业在高密度、微型化组件加工中的核心工艺体系&#xff0c;系统解析从锡膏印刷到成品检测的全流程关键技术。通过梳理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示例&#xff1a;统计唯一单词数代码 题目 分析 大佬写的很明白&#xff0c;看这儿 我讲讲…...

突破传统:用Polars解锁ICU医疗数据分析新范式

一、ICU数据革命的临界点 在重症监护室&#xff08;ICU&#xff09;&#xff0c;每秒都在产生关乎生死的关键数据&#xff1a;从持续监测的生命体征到高频更新的实验室指标&#xff0c;从呼吸机参数到血管活性药物剂量&#xff0c;现代ICU每天产生的数据量级已突破TB级别。传统…...

命名实体识别与文本生成算法

在自然语言处理&#xff08;NLP&#xff09;的浩瀚星空中&#xff0c;命名实体识别&#xff08;Named Entity Recognition, NER&#xff09;与文本生成算法如同两颗璀璨的星辰&#xff0c;各自闪耀&#xff0c;又相互辉映&#xff0c;共同推动着人工智能技术在语言理解与生成领…...

10.3 指针进阶_代码分析

代码分析 9. 指针和数组代码解析一维数组字符数组字符串二维数组 10. 指针代码分析eg1eg2eg3eg4eg5eg6eg7eg8 10.1 指针进阶_数组指针 10.2 指针进阶_函数指针 9. 指针和数组代码解析 数组名arr是首元素地址 例外&#xff1a; 1. sizeof(arr)&#xff0c;计算整个数组的大小&…...

深入理解推理语言模型(RLM)

大语言模型从通用走向推理&#xff0c;万字长文解析推理语言模型&#xff0c;建议收藏后食用。 本文基于苏黎世联邦理工学院的论文《Reasoning Language Models: A Blueprint》进行整理&#xff0c;你将会了解到&#xff1a; 1、RLM的演进与基础&#xff1a;RLM融合LLM的知识广…...

在Nginx上配置并开启WebDAV服务的完整指南

在Nginx上配置并开启WebDAV服务的完整指南 如何在 Nginx 上开启 WebDAV 服务 要在 Nginx 上开启 WebDAV 服务&#xff0c;你需要配置 Nginx 以支持 WebDAV 请求。以下是详细的步骤&#xff1a; 1. 确保 Nginx 安装了 WebDAV 模块 Nginx 的 WebDAV 功能由 http_dav_module 模…...

大语言模型学习

大语言模型发展历程 当前国内外主流LLM模型 ‌一、国外主流LLM‌ ‌LLaMA2‌ Meta推出的开源模型&#xff0c;参数规模涵盖70亿至700亿&#xff0c;支持代码生成和多领域任务适配‌57。衍生版本包括Code Llama&#xff08;代码生成优化&#xff09;和Llama Chat&#xff08;对…...

夜天之书 #106 Apache 软件基金会如何投票选举?

近期若干开源组织进行换届选举。在此期间&#xff0c;拥有投票权的成员往往会热烈讨论&#xff0c;提名新成员候选人和治理团队的候选人。虽然讨论是容易进行的&#xff0c;但是实际的投票流程和运作方式&#xff0c;在一个成员众多的组织中&#xff0c;可能会有不少成员并不清…...

从Aurora看Xanadu可扩展模块化光量子计算机的现状与未来展望

从Aurora看Xanadu可扩展光量子计算机的现状与未来展望 一、引言 1.1 研究背景与意义 随着信息技术的飞速发展,经典计算机在许多领域取得了巨大的成功,但在面对一些复杂问题时,其计算能力逐渐接近极限。量子计算机作为一种新型计算设备,基于量子力学原理,能够实现并行计算…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程&#xff08;限时至2025/5/15&#xff09; Oracle AI Vector Search 1Z0-184-25考试&#xff0c;都顺利拿到certified了没。 各行各业的AI 大模型的到来&#xff0c;传统的数据库中的SQL还能不能打&#xff0c;结构化和非结构的话数据如何和…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...

aurora与pcie的数据高速传输

设备&#xff1a;zynq7100&#xff1b; 开发环境&#xff1a;window&#xff1b; vivado版本&#xff1a;2021.1&#xff1b; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程&#xff0c;pc通过pcie传输给fpga&#xff0c;fpga再通过aur…...

智能体革命:企业如何构建自主决策的AI代理?

OpenAI智能代理构建实用指南详解 随着大型语言模型&#xff08;LLM&#xff09;在推理、多模态理解和工具调用能力上的进步&#xff0c;智能代理&#xff08;Agents&#xff09;成为自动化领域的新突破。与传统软件仅帮助用户自动化流程不同&#xff0c;智能代理能够自主执行工…...

.Net Framework 4/C# 面向对象编程进阶

一、继承 (一)使用继承 子类可以继承父类原有的属性和方法,也可以增加原来父类不具备的属性和方法,或者直接重写父类中的某些方法。 C# 中使用“:”来表示两个类的继承。子类不能访问父类的私有成员,但是可以访问其公有成员,即只要使用 public 声明类成员,就既可以让一…...