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

flask入门

第一个Flask项目

在这里插入图片描述
在这里插入图片描述
创建后项目如下图
在这里插入图片描述
static存放静态文件,templates存放Jinja2模板,app.py是整个项目的入口文件
我们略微理解下app.py这里的代码

# 从flask这个包中导入Flask类
from flask import Flask#使用Flask类创建一个app对象
#__name__:代表当前这个app.py模板
#1.以后出现bug,可以帮助我们快速定位
#2.对于寻找模板文件,有一个相对路径
app = Flask(__name__)#创建一个路由和视图函数的映射
#https://www.baidu.com
#/home/user/。。。。
#这里单独一个/表示根路由
@app.route('/')
def hello_world():  # put application's code herereturn 'Hello World!'if __name__ == '__main__':app.run()

我们运行代码
在这里插入图片描述
进入网站查看
在这里插入图片描述

debug、host和port的配置

在这里插入图片描述
在这里插入图片描述
说明:

  1. debug模式

    • 开启debug模式后,只要修改代码后保存,就会自动重新加载,不需要手动重启项目
    • 如果开发的时候,出现bug,如果开启了debug模式,在浏览器上就可以看到出错信息
  2. 修改host

    • 主要作用:就是让其他电脑(包括任何可以联网的电子设备,比如手机,平板)能访问到我电脑上的flask项目
  3. 修改端口号

    • 主要作用:如果5000端口被其他程序占用了,那么可以通过修改port来监听的端口号

URL与视图的映射

无参url

from flask import Flaskapp = Flask(__name__)# url:http[80]/https[443]//www.baidu.com:443/path
#url与视图:其实可以理解为path与视图
@app.route('/')
def hello_world(): return 'Hello World!'@app.route('/demo')
def china(): return 'Hello 中国'if __name__ == '__main__':app.run()

注意修改两个地方,一个是路径名,一个是函数名
在这里插入图片描述

有参url

带参数的url,将参数固定到了path中

@app.route('/demo2/<int:id>')
def demo2(id):return '您携带的id是%s' % id

在这里插入图片描述
如果去掉int:,则传入什么都行,加入后只能传入int类型,否则会报错

查询字符串的方式传参

用这种方式需要用到request,先在开头引入

from flask import Flask,request
#/book/list:会给我返回第一页的数据
#/book/list?page=2:获取第二页的数据
@app.route('/book/list')
def book_list():#arguments:参数#request.args:类字典类型page = request.args.get("page",default=1,type=int)return f"你得到的是第{page}的信息"

在这里插入图片描述
在这里插入图片描述

Jinja2

模板渲染

现在template里新建html文件
在这里插入图片描述
在这里插入图片描述
在body里填入内容就可以显示在页面上
比如在body里写个你好,运行代码
在这里插入图片描述

那么我们如何把页面渲染给前端,用render_template

from flask import Flask,render_templateapp = Flask(__name__)@app.route('/')
def hello_world():  # put application's code here# return 'Hello World!'return render_template("index.html")if __name__ == '__main__':app.run()

在这里插入图片描述
如何给html传参使用
在这里插入图片描述
在这里插入图片描述

模板访问对象属性

通过类传入数据

# app.py
class User:def __init__(self,username,email):self.username = usernameself.email = email@app.route('/')
def hello_world():user=User(username="李四",email="123@qq.com")person={"username":"张三","email":"456@qq.com"}return render_template("index.html",user=user,person=person)#index.html
<body>
这是传入的名字:{{ user.username }}
这是传入的邮箱:{{ user.email }}
<br>
{{ person['username'] }}
{{ person.username }}
{{ person['email'] }}
{{ person.email }}
</body>

在这里插入图片描述

过滤器的使用

通过管道符号|
我们在下例中写了两种形式,一种是用现有的比如length,还有一种是我们自定义的,比如这里的dformat

#app.py
def datetime_format(value,format="%Y年%m月%d日 %H时%M分%S秒"):return value.strftime(format)
app.add_template_filter(datetime_format,"dformat")@app.route('/filter')
def filter():user=User(username="filter",email="123@qq.com")mytime=datetime.now()return render_template("filter.html",user=user,mytime=mytime)#filter.html
<body>
{{ user.username }}--{{ user.username|length }}
<br>
{{ mytime }}--{{ mytime|dformat }}
</body>

在这里插入图片描述
(注:由于使用了datetime,在一开始要通过from datetime import datetime引入)

控制语句

#app.py
@app.route("/control")
def control_statement():age=10book=[{"name":"红楼梦","author":"曹雪芹",},{"name":"西游记","author":"吴承恩",}]return render_template("control.html",age=age,book=book)#control.html
<body>
{% if age>18 %}
<div>你大于18</div>
{% elif age==18 %}
<div>你等于18</div>
{% else %}
<div>你小于18</div>
{% endif %}{% for a in book %}
<div>name:{{ a.name }},author:{{ a.author }}</div>
{% endfor %}
</body>

在这里插入图片描述

模板继承

#app.py
@app.route("/son")
def son():return render_template("children.html")#father.html
<body>
我是父亲的内容
{% block body %}
{% endblock %}{% block haha %}
{% endblock %}
</body>#children.html(此处没有省略内容,就是全部内容,不是像上面只在body区域)
{% extends "father.html" %}
{% block haha %}
我是从儿子来的haha
{% endblock %}{% block body %}
我是从儿子来的body
{% endblock %}

在这里插入图片描述

jinjia2中加载静态文件

#app.py
@app.route('/static')
def static_demo():return render_template("static.html")#static.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{{ url_for('static',filename='css/style.css') }}"><script src="{{ url_for('static',filename='js/my.js') }}"></script>
</head>
<body>
<img src="{{ url_for('static',filename='images/cat.png') }}" alt="">
</body>
</html>

static静态文件设置如下
在这里插入图片描述
在这里插入图片描述
结果如下
在这里插入图片描述
在这里插入图片描述

数据库

相关文章:

flask入门

第一个Flask项目 创建后项目如下图 static存放静态文件&#xff0c;templates存放Jinja2模板&#xff0c;app.py是整个项目的入口文件 我们略微理解下app.py这里的代码 # 从flask这个包中导入Flask类 from flask import Flask#使用Flask类创建一个app对象 #__name__:代表当前…...

掌动智能:性能测试工具优势有哪些

由于应用程序的性能直接影响用户体验和满意度。而性能问题可能会导致应用响应缓慢、崩溃或无法处理大量用户请求。为了确保应用程序的高性能和可靠性&#xff0c;开发团队需要对应用程序进行性能测试。性能测试工具能够模拟真实场景下的负载并监测应用程序的性能表现&#xff0…...

实现一个简单的线性回归和多项式回归(2)

对于多项式回归&#xff0c;可以同样使用前面线性回归中定义的LinearRegression算子、训练函数train、均方误差函数mean_squared_error&#xff0c;生成数据集create_toy_data,这里就不多做赘述咯~ 拟合的函数为 def sin(x):y torch.sin(2 * math.pi * x)return y1.数据集的建…...

云原生Kubernetes:K8S集群kubectl命令汇总

目录 一、理论 1.概念 2. kubectl 帮助方法 3.kubectl 子命令使用分类 4.使用kubectl 命令的必要环境 5.kubectl 详细命令 一、理论 1.概念 kubectl是一个命令行工具&#xff0c;通过跟 K8S 集群的 API Server 通信&#xff0c;来执行集群的管理工作。 kubectl命令是操…...

Java使用模板导出word、pdf

使用deepoove根据模板导出word文档&#xff0c;包括文本、表格、图表、图片&#xff0c;使用WordConvertPdf可将word文档转换为pdf导出 模板样例&#xff1a; 导出结果&#xff1a; 一、引入相关依赖 <!-- 工具类--><dependency><groupId>cn.hutool&…...

速通Redis基础(二):掌握Redis的哈希类型和命令

目录 Redis 哈希类型简介 Redis 哈希命令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX ​编辑 HINCRBY HINCRBYFLOAT Redis的哈希类型命令小结 Redis 是一种高性能的键值存储数据库&#xff0c;支持多种数据类型&#xff0c;其中之…...

WebDAV之π-Disk派盘 + 书藏家

书藏家是一款书籍收藏的软件,对于喜欢阅读书籍的用户来说非常友好,记录你所阅读的书籍内容,对你所阅读的书籍内容进行全方位的管理,并且支持多种录入的方式,不管是实体书籍还是网络书籍都能够进行更为有效的管理;内置WebDAV 模块,更加便利的整理自己的文件资源;书藏家的…...

香港Web3.0生态现状

目前香港Web3.0生态正在快速发展。香港政府和金融机构正在积极推动Web3.0生态的建设&#xff0c;以推动数字经济和智慧城市的发展。香港政府已经发布了有关虚拟资产发展的政策宣言&#xff0c;鼓励和监管并重&#xff0c;加大力度推动虚拟资产产业向前发展。同时&#xff0c;香…...

LLMs之BELLE:源码解读(sft_train.py文件)

LLMs之BELLE:源码解读(sft_train.py文件) 目录 源码解读(sft_train.py文件) # 1、解析命令行参数,包括模型参数、数据参数和训练参数。...

【UE5 Cesium】17-Cesium for Unreal 建立飞行跟踪器(2)

目录 效果 步骤 一、飞机沿航线飞行 二、通过切换相机实现在不同角度观察飞机飞行 效果 步骤 一、飞机沿航线飞行 先去模型网站下载一个波音737飞机模型 然后将下载好的模型导入到UE项目中&#xff0c;导入时需要勾选“合并网格体”&#xff08;导入前最好在建模软件中将…...

【ElasticSearch】基于 Java 客户端 RestClient 实现对 ElasticSearch 索引库、文档的增删改查操作,以及文档的批量导入

文章目录 前言一、对 Java RestClient 的认识1.1 什么是 RestClient1.2 RestClient 核心类&#xff1a;RestHighLevelClient 二、使用 Java RestClient 操作索引库2.1 根据数据库表编写创建 ES 索引的 DSL 语句2.2 初始化 Java RestClient2.2.1 在 Spring Boot 项目中引入 Rest…...

【Node.js】stream 流模块

流是一种抽象的数据结构。从键盘输入到应用程序就是标准输入流&#xff08;stdin&#xff09;。应用程序把字符一个一个输出到显示器上叫做&#xff1a;标准输出流&#xff08;stdout&#xff09;。 流的特点是数据是有序的&#xff0c;而且必须依次读取&#xff0c;或者依次写…...

【LeetCode】——链式二叉树经典OJ题详解

主页点击直达&#xff1a;个人主页 我的小仓库&#xff1a;代码仓库 C语言偷着笑&#xff1a;C语言专栏 数据结构挨打小记&#xff1a;初阶数据结构专栏 Linux被操作记&#xff1a;Linux专栏 LeetCode刷题掉发记&#xff1a;LeetCode刷题 算法头疼记&#xff1a;算法专栏…...

代码注释对于程序员重要吗?

程序员对代码注释可以说是又爱又恨又双标……你是怎么看待程序员不写注释这一事件的呢&#xff1f; 代码注释的重要性 代码注释是指在程序代码中添加的解释性说明&#xff0c;用于描述代码的功能、目的、使用方法等。代码注释对于程序的重要性主要体现在以下几个方面&#x…...

OpenHamony开发笔记一:在HarmonyOS虚拟机上运行openharmony工程

在HarmonyOS的虚拟机上要运行openharmony的工程时需要修改的地方有 1.修改build-profile.json5&#xff0c;将runtimeOS改为HarmonyOS "targets": [{"name": "default","runtimeOS": "HarmonyOS"}, 2.修改工程引用的SDK&a…...

C++程序员入门需要怎么学?(InsCode AI 创作助手)

文章目录 &#xff08;一&#xff09;学习C概念&#xff08;二&#xff09;C主要应用场景和相关产品&#xff08;三&#xff09;学习C流程1. 学习C语法和基本示例&#xff1a;2. 深入学习面向对象编程&#xff08;OOP&#xff09;&#xff1a;3. 使用C标准库&#xff1a;4. 解决…...

Intel 高性能库之IPP信号处理简介及下载(版本5.1,含32位和64位及注册)

IPP是什么 IPP:Intel Integrated Performance Primitives 英特尔集成性能基元(英特尔IPP)是一款多核就绪的扩展函数库,其中包含众多针对多媒体、数据处理和通信应用高度优化的软件函数。它包括: 视频编码:用于 DV25/50/100、MPEG-2、MPEG-4、H.263 和 MPEG-4 Part 10 …...

【C++】运算符重载案例 - 字符串类 ② ( 重载 等号 = 运算符 | 重载 数组下标 [] 操作符 | 完整代码示例 )

文章目录 一、重载 等号 运算符1、等号 运算符 与 拷贝构造函数2、重载 等号 运算符 - 右操作数为 String 对象3、不同的右操作数对应的 重载运算符函数 二、重载 下标 [] 运算符三、完整代码示例1、String.h 类头文件2、String.cpp 类实现3、Test.cpp 测试类4、执行结果 一…...

Vue脚手架开发流程

一、项目运行时会先执行 public / index.html 文件 <!DOCTYPE html> <html lang""><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&quo…...

从零开始学习线性回归:理论、实践与PyTorch实现

文章目录 &#x1f966;介绍&#x1f966;基本知识&#x1f966;代码实现&#x1f966;完整代码&#x1f966;总结 &#x1f966;介绍 线性回归是统计学和机器学习中最简单而强大的算法之一&#xff0c;用于建模和预测连续性数值输出与输入特征之间的关系。本博客将深入探讨线性…...

终极指南:Diablo Edit2暗黑破坏神2存档修改器完整使用教程

终极指南&#xff1a;Diablo Edit2暗黑破坏神2存档修改器完整使用教程 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾为暗黑破坏神2中重复刷装备而烦恼&#xff1f;是否因为技能点分配失…...

Beyond Compare 5 开源密钥生成器:逆向工程与授权机制的深度解析

Beyond Compare 5 开源密钥生成器&#xff1a;逆向工程与授权机制的深度解析 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件安全与逆向工程领域&#xff0c;授权验证机制始终是开发者与安…...

EVPN实战解析:分布式网关部署与关键配置精要

1. 为什么需要EVPN分布式网关&#xff1f; 在多租户数据中心网络环境中&#xff0c;虚拟机迁移和三层互通是刚需。传统集中式网关就像只有一个出入口的大型停车场&#xff0c;所有车辆必须绕道中央区域才能到达目的地&#xff0c;而分布式网关则相当于在每个楼层都设置了出入口…...

Faust高级特性:窗口聚合与状态管理完整教程

Faust高级特性&#xff1a;窗口聚合与状态管理完整教程 【免费下载链接】faust Python Stream Processing. A Faust fork 项目地址: https://gitcode.com/gh_mirrors/faus/faust 掌握Faust的窗口聚合与状态管理功能&#xff0c;构建高效的Python流处理应用&#xff01;&…...

ARM架构ID_ISAR4寄存器详解与应用

1. ARM架构中的ID_ISAR4寄存器概述在ARMv8架构体系中&#xff0c;系统寄存器扮演着处理器功能特性的关键角色。作为指令集属性寄存器家族的重要成员&#xff0c;ID_ISAR4&#xff08;Instruction Set Attribute Register 4&#xff09;专门用于描述处理器在AArch32执行状态下支…...

从零到一:构建与解析XTS测试环境的实战指南

1. 环境准备&#xff1a;搭建XTS测试环境的基础条件 第一次接触XTS测试环境搭建时&#xff0c;我完全被各种术语搞晕了。后来才发现&#xff0c;只要把基础环境准备好&#xff0c;后面的工作就会顺利很多。就像盖房子要先打地基一样&#xff0c;搭建XTS测试环境也需要先准备好几…...

基于规则引擎的自动化文件管理工具smartcat实战指南

1. 项目概述&#xff1a;一个智能化的文件分类与归档工具最近在整理个人电脑和服务器上的文件时&#xff0c;我又一次陷入了混乱。下载文件夹里塞满了各种格式的文档、图片、压缩包&#xff0c;项目目录下混杂着不同版本的代码、设计稿和会议记录。手动分类不仅耗时&#xff0c…...

【c++面向对象编程】第22篇:输入输出运算符重载:<< 与 >> 的友元实现

目录 一、为什么不能是成员函数&#xff1f; 二、标准写法&#xff08;两步法&#xff09; 第1步&#xff1a;在类中声明友元函数 第2步&#xff1a;实现全局函数 三、为什么要返回引用&#xff1f; 支持链式输出 正确 vs 错误示例 四、为什么需要友元&#xff1f;能否不…...

AI智能体技能开发实战:从awesome-agent-skills到工程化应用

1. 项目概述&#xff1a;一个智能体技能的知识宝库最近在折腾AI智能体&#xff08;Agent&#xff09;开发&#xff0c;发现一个挺有意思的现象&#xff1a;大家都能用LangChain、AutoGen这些框架搭出个智能体的架子&#xff0c;但真想让这个“智能体”干点具体、有用、甚至有点…...

别光训练模型了!用YOLOv5+OpenCV做个实时手势控制小游戏(Python源码分享)

用YOLOv5OpenCV打造手势控制游戏&#xff1a;从模型部署到交互设计实战 当计算机视觉遇上游戏设计&#xff0c;会碰撞出怎样的火花&#xff1f;本文将带你跨越AI模型部署与交互开发的鸿沟&#xff0c;用不到200行Python代码实现一个可通过手势控制的"太空侵略者"风格…...