Flask 知识点整理

news/2024/5/5 14:29:00/文章来源:https://blog.csdn.net/Krien666/article/details/130475819

文章目录

  • 1.URL与视图的映射
      • 带参数的url:将参数固定到了path中
      • 查询字符串的方式传参
  • 2.模板渲染
      • 给html文件传参
  • 3.模板访问对象属性
      • User 是个类
      • User是个字典
  • 4.过滤器的使用
      • 通过一个 | 管道符进行过滤
      • 自定义过滤器
  • 5.控制语句
      • if
      • for
  • Flask连接MySQL数据库
  • ORM模型与表的映射
  • ORM模型的CRUD操作
      • create
      • query
      • update
      • delete

1.URL与视图的映射

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

from flask import Flaskapp = Flask(__name__)@app.route('/blog/<int:blog_id>')
def blog_detail(blog_id):return "访问的是:%s"% blog_id

查询字符串的方式传参

from flask import Flask , request@app.route('/book/list')
def book_list():page = request.args.get("page",default = 1,type = int)return f"您获取的是第{page}的图书列表!"
http://127.0.0.1:5000/book/list?page=5

在这里插入图片描述


2.模板渲染

给html文件传参

from flask import Flask,render_template@app.route('/blog/<int:blog_id>')
def blog_detail(blog_id):return render_template("blog_detail.html",blog_id,username = "krien")
<body>	
<p> 您的用户名是 {{ username }}</p>
<h1>您访问的博客详情是:{{ blog_id }}</h1>
<body>


3.模板访问对象属性

User 是个类

class User:def __init__(self,username,email):self.username = usernameself.email = email@app.route('/')
def hello_world():  # put application's code hereuser = User(username = "krien", email = "xx@qq.com")return render_template('index.html',user = user)
<body>	{{ user.username }} / {{ user.email }}<body>

User是个字典

from flask import Flask,render_template ,requestapp = Flask(__name__)@app.route('/')
def hello_world():  # put application's code hereuser = User(username = "krien", email = "xx@qq.com")person = {"username":"张三","email":"zhangsan@163.com"}return render_template('index.html',user = user,person = person)
<body>	<div> {{ user.username }} / {{ user.email }} </div>
<div> {{ person.username}} / {{ person.email }} </div><body>


4.过滤器的使用

通过一个 | 管道符进行过滤

from flask import Flask,render_template ,requestfrom flask import Flask,render_template ,request@app.route('/filter')
def filter_demo():  # put application's code hereuser = User(username = "krien", email = "xx@qq.com")return render_template('filter.html',user = user)
<body>	
{{ user.username }}-{{ user.username|length }}
<body>

自定义过滤器

过滤器本质上是一个 Python 函数,他会把过滤的值当作第一个参数传给这个函数,函数经过一些逻辑处理后,在返回新的值。在过滤器函数写好之后,可以通过@app.template_filter装饰器或者是 app.add_template_filter 函数来把函数注册成Jinjia2 能用的过滤器

from flask import Flask,render_template ,request
from datetime import datetimeapp = Flask(__name__)def datetime_format(value,format = "%Y年%m月%d日 %H:%M"):return value,strftime(format)app.add_template_filter(datetime_format,"dformat")@app.route('/filter')
def filter_demo():  # put application's code hereuser = User(username = "krien", email = "xx@qq.com")mytime = date_time.now()return render_template('filter.html',user = user,mytime = mytime)
<body>	
{{ user.username }}-{{ user.username|length }}
<div> {{mytime|dformat}} </div>
<body>


5.控制语句

if

@app.route("/control")
def control_statement():age = 17return render_template("control.html",age=age)
<body>	
{{% if age>18 %}}<div>您已经满18,可以进入网吧</div>
{{% elif age==18 %}}<div>您刚满18,需要父母陪同</div>
{{% else %}}<div>您未满18,不能进去</div>
{{% endif %}}
<body>

for

{{% for book in books %}}<div>图书名称:{{ book.name }},图书作者:{{ book.auther }}</div>
{{% endfor %}}


Flask连接MySQL数据库

from sqlalchemy import textapp = Flask(__name__)HOSTNAME = 'localhost'PORT = 3306USERNAME = "root"PASSWORD = "123456"DATABASE = "database_learn"app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}/{DATABASE}"db = SQLAlchemy(app)with app.app_context():with db.engine.connect() as conn:rs = conn.execute(text("select 1"))print(rs.fetchone())


ORM模型与表的映射

class User(db.Model):__tablename__ = 'user'id = db.Column(db.Integer,primary_key = True,autoincrement = True)username = db.Column(db.String(100),nullable = False)password = db.Column(db.String(100),nullable = False)with app.app_context():db.create_all()


ORM模型的CRUD操作

create

	@app.route('/user/add')
def add_user():user = User(username="krien",password = '123456')user1 = User(username='ddd',password = '121212')db.session.add(user)db.session.commit()return "用户创建成功"

query

	@app.route('/user/query')
def query_user():# 1.getuser = User.query.get(1)print(f"{user.id}:{user.username}-{user.password}")# 2.filter_by 查找return "数据查找成功"

update

@app.route('/user/update')
def update_user():user = User.query.filter_by(username = "krien").first()user.password = '222222'db.session.commit()return "数据更新成功"

delete

@app.route('/user/delete')
def delete_user():user = User.query.get(2)db.session.delete(user)db.session.commit()return "数据删除成功"

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

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

相关文章

[MySQL / Mariadb] 数据库学习-Linux中二进制方式安装MySQL5.7

Linux中二进制方式安装MySQL5.7 安装安装方式官网下载安装包创建用户组mysql&#xff0c;用户和目录把下载的安装包&#xff0c;放到/home/mysql/将本地文件拷贝到远程&#xff1a; scp 文件名 –用户名计算机IP或者计算机名称:远程路径 验证包解压安装包&#xff0c;移动到/us…

OJ 系统常用功能介绍 快速入门 C++ Python JAVA语言在线评测

技术支持微 makytony 服务器配置 腾讯云 2H4G 5M 60GB 轻量应用服务器 承载大约 200~400人使用&#xff0c;经过压力测试&#xff0c;评测并发速度可满足130人左右的在线比赛。 系统镜像选 Ubuntu 22.04 LTS &#xff0c;Ubuntu是最热门的Linux发行版之一&#xff0c;是一款…

数组中的empty剖析

数组中的empty剖析 一、首先empty是怎么来的 直接通过new Array来新建&#xff0c;手动修改数组的length&#xff0c;逗号之间没有任何数据等 const array new Array(3); console.log(array); //* (3) [empty 3]const array2 [1, , 3]; console.log(array2); //* [1, e…

一起学 WebGL:绘制图片

大家好&#xff0c;我是前端西瓜哥。之前讲解了如何用 WebGL 绘制红色三角形&#xff0c;今天西瓜哥带大家来学习如何将图片绘制到画布上的技术&#xff1a;纹理映射&#xff08;texture mapping&#xff09;。 本文为系列文章中的一篇&#xff0c;请先阅读&#xff1a; 《一起…

python 系列 07 - 基于easyocr的ocr识别

OCR,光学文字识别&#xff0c;对文本资料进行扫描&#xff0c;然后对图像文件进行分析处理&#xff0c;获取文字及版面信息的过程。本示例通过easyocr库来演示。easyocr是一个比较流行的库&#xff0c;支持超过80种语言。安装的时候注意会附带安装torch库&#xff08;一个深度学…

【Python】序列类型③-集合

文章目录 1.集合(set)简介2.集合的定义3.集合的遍历4.集合的常用方法 1.集合(set)简介 集合是一种无序可变的容器对象 集合最大的特点:同一个集合内元素是不允许有重复的,因此集合自带"去重"效果 2.集合的定义 集合的定义有两种方式: 使用{}进行定义,这种方式不能定…

获得 随机验证码(以图片为底层)

1&#xff1a;工具类 Slf4j public class RandomValidateCode {private static String baseNumLetter "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";private static String font "微软雅黑";//绘制验证码图片,返回验证码文本内容pu…

基于海鸥算法改进的随机森林分类算法-附代码

基于海鸥算法改进的随机森林分类算法 文章目录 基于海鸥算法改进的随机森林分类算法1.数据集2.RF模型3.基于海鸥算法优化的RF4.测试结果5.Matlab代码6.Python代码 摘要&#xff1a;为了提高随机森林数据的分类预测准确率&#xff0c;对随机森林中的树木个数和最小叶子点数参数利…

版本控制系统Git - 配置与基本使用

Git 1 Git简介1 Git概述2 Git的作用2.1 项目版本管理2.2 多人协同开发2.3 Git 的结构2.4 Git的工作原理 2 Git安装1 下载Git2 安装Git3 配置环境变量4 测试git是否安装成功5 安装git桌面工具(可以不安装) 3 Git基本操作1 设置Git用户2 新建仓库3 查看仓库状态4 添加到暂存文件5…

【python可视化】常用数据类型

&#x1f64b;‍ 哈喽大家好&#xff0c;本次是python数据分析、挖掘与可视化专栏第二期 ⭐本期内容&#xff1a;常用数据类型 &#x1f3c6;系列专栏&#xff1a;Python数据分析、挖掘与可视化 &#x1f44d;欢迎大佬指正&#xff0c;一起学习&#xff0c;一起加油&#xff01…

C++入门3(C++新特性 using string auto)

C入门3 C新特性auto推导规则auto 作为函数的形参类型decltype基于范围for循环 typedef与usingC语言定义变量typedef 在C语言中的写法using在C11中的写法using与template的结合 string的简单使用 C新特性 auto推导规则 auto类型推导: auto定义的变量&#xff0c;可以根据初始化…

C语言单链表

本节目标&#xff1a; ①定义单链表结构体 ②初始化单链表 ③单链表增加结点&#xff08;头插法、尾插法&#xff09; ④删除指定结点 ⑤打印输出 目录 导入头文件 定义单链表结构体 初始化单链表 头插法 尾插法插入 删除指定结点 打印单链表 全部代码展示 导入头文件 …

中文大模型安全性哪家强?清华团队新发布

当前大型语言模型的火爆程度我们不用再进行赘述了&#xff0c;伴随着百度文心一言打响国内商业大模型第一枪&#xff0c;华为盘古&#xff0c;阿里通义千问&#xff0c;智谱ChatGLM,科大讯飞星火等国内公司纷纷开始布局。 另一方面由于众所周知的政策原因&#xff0c;和如火如荼…

5 分钟教你如何免费用上 GPT-4

今天要分享的就是普通用户&#xff0c;没有 OpenAI 账号&#xff0c;不需要写代码&#xff0c;你依然可以免费体验 GPT-4&#xff0c;当然&#xff0c;会有一些缺点&#xff0c;本篇文章将会手把手教你怎么用上免费版的 GPT-4 以及它的一些限制。 第一步&#xff1a;打开 Stea…

Threejs进阶之十三:CSS3DRenderer与Tween.js实现粒子小球按规律变化

今天我们使用CSS3DRendererTween.js实现Threejs官方示例中的粒子小球按规律变化的效果&#xff0c;先看下最终实现的效果 先来分析下&#xff0c;这个页面的动画效果是由512个小球组合起来的四种不同变化&#xff0c;分别是曲面、立方体、随机和圆球四种变化&#xff1b;下面我…

UDP的报文结构

UDP 报文结构 基本上所有的教科书上都是这样画的图, 但实际上 UDP 报文结构不是这样的, 这样显示应该是容易排版. 正确应该如下图 : 端口号 : 每个端口号在 UDP 报文里占两个字节, 取值范围就是: 0 ~ 65535 源 ip 和源端口描述了数据从哪里来, 目的 ip 和目的端口描述了数据去哪…

文本的清洗和标准化:如何处理混乱的数据?

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

操作系统考试复习—第三章 优先级倒置 死锁问题

当前OS广泛采用优先级调度算法和抢占方式&#xff0c;然而在系统中存在着影响进程运行的资源从而可能产生"优先级倒置"现象 具体解释为&#xff1a;在原本的调度算法设计中&#xff0c;高优先级进程可以抢占低优先级的CPU资源&#xff0c;先执行高优先级任务。但是存…

x265码控分析

D和R的关系 高分辨率量化 均匀量化&#xff1a;量化区间 ‘ Δ k y k − y k − 1 ‘ \Delta_ky_k-y_{k-1} ‘Δk​yk​−yk−1​‘&#xff0c;近似为常数&#xff1b;p(x)为信源概率密度函数&#xff0c;且 ‘ Δ k ‘ \Delta_k ‘Δk​‘的大小相对于p(x)的变化率充分小&…

电力NLP:指令票规范识别

文章目录 任务目的想法讲解数据集介绍1电气主语2操作任务判断数据集3操作内容判断数据集4错误词数据集 解法讲解程序、数据集下载链接 任务目的 识别调度指令票&#xff08;或者其它操作票&#xff09;是否规范。 想法讲解 按石第2014—16号定值单投入石双西线161开关6区保护…