四、Flask进阶

Flask-Cache

  • pip install flask-caching安装
  • flask_cache初始化
# ext.py
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_caching import Cachedb = SQLAlchemy()
migrate = Migrate()
cache = Cache(config={'CACHE_TYPE': 'simple'  # 缓存类型
})def init_exts(app):db.init_app(app=app)migrate.init_app(app=app, db=db)cache.init_app(app=app)
# view.py
# 使用缓存
@blue.route('/')
@cache.cached(timeout=20)  # 给视图函数加一个缓存20秒, 超过20秒就会重新请求,20秒内使用缓存
def index():print('Index2')print('index视图函数中:', g.star)time.sleep(5)return 'index2'

钩子

  • 钩子或叫钩子函数,是指在执行函数和目标函数之间挂载的函数,框架开发者给调用方提供一个poit-挂载点,是-种AOP切面编程思想。
    在这里插入图片描述
# view.py
# 钩子:钩子函数
#   也叫中间件
# before_request: 每一次请求之前访问
@blue.before_request
def before():print('before_request')# request# print(request.path)# print(request.method)# print(request.remote_addr)  # 客户端ip# 简单的反爬# print(request.user_agent)  # python-requests/2.28.2# if "python" in request.user_agent.string:#     return '您正在使用Python爬虫,再见!'# 针对IP做反爬(简单)ip = request.remote_addr# cache.get()# cache.set()if cache.get(ip):# 做了拦截,不会进入视图函数return '小伙子,别爬了!'else:# 对每个IP设置一个缓存,1秒内不让重复访问cache.set(ip, 'value', timeout=1)

Flask内置对象

在这里插入图片描述

# view.py
from flask import Blueprint, request, render_template, session, g, current_app# Flask内置对象#  request:请求对象#  session:会话对象#  g:global全局对象#  current_app: Flask应用对象g.star = '杰伦'print(g.star)print(current_app)  # <Flask 'App'>print(current_app.config)  # <Config {'ENV': 'production', 'DEBU...

配置template和static

在这里插入图片描述

# __init__.py :初始化文件,创建Flask应用from flask import Flask
from .views import blue
from .exts import init_extsimport os
# 项目目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print('BASE_DIR:', BASE_DIR)
# BASE_DIR: FlaskPro1_进阶 项目目录def create_app():# 配置静态文件和模板文件目录# static_folder = '../static'# template_folder = '../templates'static_folder = os.path.join(BASE_DIR, 'static')template_folder = os.path.join(BASE_DIR, 'templates')app = Flask(__name__, static_folder=static_folder,template_folder=template_folder)# 注册蓝图app.register_blueprint(blueprint=blue)# 配置数据库db_uri = 'sqlite:///sqlite3.db'  # sqlite配置# db_uri = 'mysql+pymysql://root:123456@localhost:3306/flaskdb'  # mysql的配置app.config['SQLALCHEMY_DATABASE_URI'] = db_uriapp.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False  # 禁止对象追踪修改# 初始化插件init_exts(app=app)return app

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

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

相关文章

webpack、rollup、vite、esbuild 前端构建工具到底有什么关系和区别?

一、为什么需要构建工具&#xff0c;前端构建工具具体干了些什么&#xff1f; 前端最开始的开发模式为HTMLJSCSS&#xff0c;写起来痛不欲生&#xff0c;要直面js操作dom、浏览器兼容js / css、代码压缩、开发中要不断手动刷新等问题。直到nodeJS后&#xff0c;出现了angular、…

MybatisPlus(简单CURD,MP的实体类注解,MP条件查询,MP分页查询,MP批量操作,乐观锁,代码生成器)

目录 一、MP入门 1. MP是什么 2. MP使用入门 1 说明 2 准备MP项目环境 1) 添加依赖 2) 创建配置文件 3) 创建引导类 3 MP使用入门 1 创建实体类 2 创建Mapper 3 使用测试 3. 小结 二、MP简单CURD【重点】 1. 说明 2. 示例 3. 小结 三、MP的实体类注解[重点] …

字符串漏洞注入深入学习

字符串型漏洞注入&#xff0c;特别是针对Web应用程序的SQL注入&#xff0c;是一种常见的网络安全威胁。它涉及攻击者在不受控制的情况下&#xff0c;通过构造特定的字符串输入&#xff0c;干扰或改变应用程序中原有的SQL查询语句&#xff0c;从而执行恶意的SQL代码。 要深入学…

常用vim命令

vim 是一种文本编辑器&#xff0c;常用于命令行界面下。它具有强大的功能和灵活的配置选项&#xff0c;适用于编辑各种类型的文本文件&#xff0c;包括代码文件、配置文件等。使用 vim 可以进行文本的编辑、查找、替换、复制、粘贴等操作。 1、编辑文件 - vim filename&#x…

微软Phi-3,3.8亿参数能与Mixtral 8x7B和GPT-3.5相媲美,量化后还可直接在IPhone中运行

Phi-3系列 Phi-3是一系列先进的语言模型&#xff0c;专注于在保持足够紧凑以便在移动设备上部署的同时&#xff0c;实现高性能。Phi-3系列包括不同大小的模型&#xff1a; Phi-3-mini&#xff08;38亿参数&#xff09; - 该模型在3.3万亿个令牌上进行训练&#xff0c;设计得足…

go学习知识点

学习 Go 语言涉及许多不同的概念和知识点。以下是一些关键的学习领域&#xff1a; 基础概念 变量和类型&#xff1a;了解 Go 的基本数据类型&#xff0c;如整型、浮点型、布尔型、字符串等&#xff0c;以及如何声明和使用变量。包管理&#xff1a;学习如何导入和使用其他包&a…

【Stable Diffusion系列】(一):AI绘画本地部署教程

目录 一、总览 二、本地部署 1、安装cuda 2、安装python 3、安装git 4、方法一 1&#xff09;获取安装包 2&#xff09;update 3&#xff09;run 5、方法二 1&#xff09;git clone 2&#xff09;双击webui-user.bat 3&#xff09;更新 6、设置启动参数 7、…

指针(5)

前言 本节是有关指针内容的最后一节&#xff0c;本节的内容以讲解指针习题为主&#xff0c;那么就让我们一起来开启本节的学习吧&#xff01; sizeof和strlen的对比 1.sizeof 我们在学习操作符的时候&#xff0c;学习了sizeof。sizeof存在的意义是用来计算变量所占用的内存空…

AI大模型日报#0424:全球首个AI基因编辑器、出门问问上市、微软开源Phi-3 Mini、昆仑万维年收49亿

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。标题: 爱诗科技完成A2轮超亿元融资&#xff0c;蚂蚁集团领投摘要: 爱诗科技完成A2轮超亿元融资&#xff0c;成为视频大模型领域融资规模最…

STM32学习和实践笔记(20):定时器

1.定时器介绍 STM32F1的定时器一共有8个&#xff0c;由2个基本定时器&#xff08;TIM6、TIM7&#xff09;、4个通用定时器&#xff08;TIM2-TIM5&#xff09;和2个高级定时器&#xff08;TIM1、TIM8&#xff09;组成。 基本定时器的功能最为简单&#xff0c;类似于51单片机内定…

前置路由守卫、后置路由守卫,前置请求守卫、后置请求守卫

前置路由守卫、后置路由守卫&#xff0c;前置请求守卫、后置请求守卫 在Vue 3和Axios中&#xff0c;路由守卫和请求守卫是用于控制路由跳转和HTTP请求的关键机制。 下面是这些守卫的介绍和使用方式&#xff1a; 前置路由守卫&#xff08;Before Route Guards&#xff09; 前置…

【行为型模式】中介者模式

一、中介者模式概述 中介者模式定义&#xff1a;用一个中介对象来封装一系列的对象交互&#xff0c;中介者使各对象不需要显式地相互引用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式。(对象行为型模式) 中介者模式…

python+django校园社交高校交友网站2x7r5.

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行&#xff0c;将系统所使用到的表以及数据存储到MySQL数据库中&#xff0c;方便对数据进行操作本课题基于WEB的开发平台&#xff0c;设计的基本思路是&#xff1a; 前端&#xff1a;vue.jselementui 框架&#…

Node.JS安装及配置教程(Windows)【安装】

文章目录 一、 Node.JS 下载1. 官网下载&#xff08;1&#xff09;国内地址&#xff08;2&#xff09;国外地址 2. 其它渠道 二、 Node.JS 安装三、 Node.JS验证四、 Node.JS 配置&#xff08;可选&#xff09;1. 配置全局模块安装路径方法一方法二2. 配置国内镜像 五、 yarn 安…

企业数智化:为什么选择梧桐数据库?

个人介绍&#xff1a;艺名司镜233&#xff0c;是中国移动梧桐数据库研发团队成员&#xff0c;从事相关的技术开发近5年了。最让我觉得自豪的不是在研发这款数据库&#xff0c;而是我们用代码&#xff0c;切实地帮助企业解决数据的困扰&#xff0c;切实地解决社会的问题。 本篇文…

大模型自动优化 Prompt 的可行性分析

随着自然语言处理领域的快速发展&#xff0c;大模型&#xff08;Large Language Models&#xff09;已经成为了当前研究的热点。大模型通过在海量语料上进行预训练&#xff0c;能够学习到丰富的语言知识和通用表示&#xff0c;在各种自然语言处理任务上取得了突破性的进展。然而…

【炼金术士】BatchSize对网络训练的影响

文章目录 1 BatchSize对于网络训练的影响2 调整学习率可以提高大BatchSize的性能3 实际训练时的建议3.1 设置初始学习率的方法3.2 多卡训练时学习率的设置 参考资料&#xff1a; 【深度学习】Batch Size对神经网络训练的影响【AI不惑境】学习率和batchsize如何影响模型的性能&…

答疑(蓝桥杯)

文章目录 答疑问题描述贪心 答疑 问题描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序&#xff0c;同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下&#xff1a; 首先进入办公室&#xff0c;编号为 i 的同学需要…

一文搞懂computed和watch:Vue中的响应式双胞胎

目录 1. 理解computed与watch computed&#xff08;计算属性&#xff09;&#xff1a; watch&#xff08;侦听器&#xff09;&#xff1a; 2. 使用场景与实例 computed应用 适用场景&#xff1a; 实例&#xff1a; watch应用 适用场景&#xff1a; 实例&#xff1a; …

AXI4---低功耗接口

在电子系统设计中&#xff0c;"low-power interface"&#xff08;低功耗接口&#xff09;是指专为减少能耗而设计的硬件接口。这类接口在不需要牺牲性能的情况下&#xff0c;通过各种技术降低功耗&#xff0c;对于移动设备、嵌入式系统和其他电池供电的应用来说尤其重…