Flask Web视频学习(3)& Redis

蓝图Blueprint

蓝图基本使用[掌握]

  • 作用: 为了进行模块化开发。每一个蓝图,都相当于一个小型app。聚合在一起,就是我们要完成的大app,即这个Web程序。
  • 特点: 属于flask中自带的,不需要安装扩展就能使用
  • 蓝图的使用流程:
    • 1.创建蓝图对象(Blueprint)
    • 2.使用蓝图装饰视图函数
    • 3.将蓝图注册到app中(register_blueprint)

以单文件使用蓝图[掌握]

  • 例子: 创建并使用商品蓝图、用户蓝图

在这里插入图片描述

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

在这里插入图片描述

以包形式使用蓝图[掌握]

  • 作用: 以包的形式管理使用蓝图,更加灵活
  • 特点: 每个蓝图都可以有自己的模板文件、静态文件、配置文件等

在这里插入图片描述

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

循环导包[理解]

  • 定义: 两个文件之间相互引用,并且引用的格式不正确,就会导致程序运行不了
  • 图解:

    • 下图是因为左侧第二行代码应该放在最后一行,但现在放在了第二行,而导致的错误——两个文件相互引用而导致循环导包。

    在这里插入图片描述

    • 为什么放在最后一行不会出现循环导包现象呢:因为当进入views.py文件中执行导包语句时,再次进入__init__文件,但执行到第二行就找到了要导入的东西,这个时候虽然还是会继续执行…又进入views.py文件,然后又进入__init__文件,但是执行到第二句时,会判断出要导入的东西已经存在,于是就终止了。也就是说,python中允许循环导入, 但是导入的结构要合理
  • 注意点:如果出现了以下语句,说明代码出现了不合理的循环导包:
    在这里插入图片描述
    解决逻辑:根据错误提示,把错误中涉及到的自己写的文件打开(系统文件不用管),然后垂直分隔,自己画图分析。
    在这里插入图片描述

蓝图参数含义[理解]

在这里插入图片描述

  • 蓝图对象中的常见的参数
    • name: 表示蓝图的名字,用来标识蓝图装饰的视图函数所属的蓝图
    • import_name: 表示蓝图所在模块的名字, 固定使用__name__
    • static_folder: 表示蓝图的静态文件夹(静态文件夹中存放图片、HTML、CSS、JS等文件)
    • url_prefix: 蓝图的访问前缀,加上之后,所有使用该蓝图进行访问的视图函数的路由都将是/url_prefic的值/XXX形式的。
      在这里插入图片描述
      在这里插入图片描述

注意:创建的static文件夹要位于users文件夹下:
在这里插入图片描述

  • template_folder: 表示蓝图的模板文件。如果app和users文件夹下都设置了模板文件夹,且都有users.html文件,则优先使用app下的。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

断言[了解]

  • 定义: 判断程序执行到某个地方的时候,是否能够达到预期的结果

  • 使用格式:

    • assert boolean表达式,异常信息
  • 执行流程:

    • 如果boolean表达式为True, 程序不会抛出异常信息,继续执行
    • 如果boolean表达式为False,程序抛出异常信息
      在这里插入图片描述
  • 使用场景:

    • 1.单元测试
    • 2.写一个框架

单元测试

  • 解释:Web程序开发过程一般包括以下几个阶段:需求分析、设计阶段、是现阶段、测试阶段。其中测试阶段通过人工或自动来运行测试某个系统的功能。
  • 测试分类: 单元测试、集成测试、系统测试
  • 单元测试: 由程序开发人员进行(其他测试都由专业人员来完成);对独立的模块进行测试
  • 流程:
    • 1.定义一个继承自unittest.TestCase的类(继承自unittest.TestCase的类可以单独运行)
    • 2.编写两个固定方法
      • setup: 测试开始的方法
        • 适合做: 初始化, 比如,数据库的链接、表的创建
      • teardown: 测试结束的方法
        • 适合做: 收尾工作, 比如数据库删除、会话移除
    • 3.编写自己的测试方法
      • 必须以test开头
      • 光标放在哪个函数的内部,就执行哪个测试方法。如果都要测试,就放在其他任何一个地方。
import unittest
class MyTest(unittest.TestCase):

    def setUp(self):
        print("setup")

    def test_login(self):
        print("test_login")

    def test_login2(self):
        print("test_login2")


    def tearDown(self):
        print("teardown")

数据库测试案例[了解]

  • 目的: 数据库添加数据是否正常

Redis

NoSQL

  • 泛指非关系型数据库
  • 不支持sql语法
  • 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式(key-value)
  • NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景
  • NoSQL中的产品种类相当多,如Mongodb(爬虫相关)、Redis(下面学习)、HBase hadoop(大数据相关)、Cassandra hadoop(大数据相关)
  • SQL数据库与NoSQL比较:
    • 适用场景不同: SQL数据库适合用于关系特别复杂的数据库查询场景,NoSQL反之
    • “事务”特性的支持:SQL对事务的支持非常完善,而NoSQL基本不支持事务
    • 两者在不断地取长补短,呈现融合趋势

redis概述

  • redis
    • 是一款NoSQL(not only sql)
  • 特点
    • 1.c语言编写出来的,读取速度快
    • 2.数据是存储在内存中的, 但是会将内存中的快照信息保存在磁盘中
  • 应用场景
    • 用来做缓存(redis中的所有数据是放在内存中的,所以存取效率更高)
    • 可以在某些特定应用场景下替代传统数据库——如社交类的应用
    • 在一些大型系统中,用redis巧妙地实现一些特定的功能:session共享、购物车

https://www.runoob.com/redis/redis-tutorial.html

redis下载

参考https://blog.csdn.net/weixin_43527241/article/details/88723408

redis语法知识学习

见本地资源 E:\FlaskWeb\Flask基础资料\day04\3_资料\2__redis_note_v1.0

用PyCharm操作redis

  • 操作流程:
    • 1.安装扩展包 pip install redis
    • 2.导入redis类 from redis import StrictRedis
    • 3.创建redis对象, 关联ip、port
    • 4.调用redis相关的方法
from redis import StrictRedis

redis_store = StrictRedis(host="127.0.0.1", port=6379)

# 增加数据
redis_store.set("name", "zjy")

右键运行,打开终端,进入redis文件夹下,输入以下命令,可以查看到python中添加的数据:
在这里插入图片描述

  • 在cmd中查看redis的步骤:
    启动redis服务器 net start redis
    进入redis客户端 redis-cli
    在这里插入图片描述
from redis import StrictRedis

redis_store = StrictRedis(host="127.0.0.1", port=6379)
# redis_store = StrictRedis(host="127.0.0.1", port=6379, decode_response=True)

# 增加数据
redis_store.set("name", "zjy")

# 增加数据,并设置有效期
redis_store.set("name1", "zjy1", 10)  # 10s后,该条数据将消失

# 修改数据
redis_store.set("name1", "zjy11", 10)

# 获取数据
name = redis_store.get("name")
print(name.decode())  
# 如果直接打印name,则输出结果是字节型,这里将其解码为字符串。
# 这样可能有些麻烦,可以通过在创建redis_store对象时传入参数decode_response=True

# 删除数据
redis_store.delete("name")

主从搭建

在这里插入图片描述

多个主从配起来,就是一个集群。

session指定存储位置

  • 定义: 用来存储敏感信息,存储在服务器内部
  • 设置: session[key] = value
  • 获取: value = session.get(key)
  • 注意点: 设置SECRET_KEY
  • 指定session存储到redis中
  • 操作流程:
    • 1.安装flask_session
      • pip install flask_session
    • 2.导入Session类
      • from flask_session import Session
    • 3.设置session相关的配置信息到app中
    • 4.读取app身上的配置信息(和session相关的)
      • Session(app)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值