flask框架(四)配套代码

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: flask框架(四)配套代码

demo01blueprint.py


1"""
 2蓝图基本使用[掌握]
 3
 4- 作用: 为了进行模块化开发
 5- 特点: 属于flask中自带的,不需要安装扩展就能使用
 6- 蓝图的使用流程:
 7  - 1.创建蓝图对象
 8  - 2.使用蓝图装饰视图函数
 9  - 3.将蓝图注册到app中
10
11"""
12from flask import Flask,Blueprint
13from demo02product import blue
14from demo03user import user_blue
15
16app = Flask(__name__)
17
18#3.将蓝图注册到app中
19app.register_blueprint(blue)
20app.register_blueprint(user_blue)
21
22
23if __name__ == '__main__':
24    print(app.url_map)
25    app.run(debug=True)


demo02product.py


1from flask import Blueprint
 2
 3#1.创建蓝图对象
 4blue = Blueprint("my_blue",__name__)
 5
 6
 7#2.使用蓝图装饰视图函数
 8#首页
 9@blue.route('/')
10def index():
11
12    return 'index'
13
14#列表页
15@blue.route('/list')
16def list():
17
18    return 'list'
19
20#详情页
21@blue.route('/detail')
22def detail():
23
24    return 'detail'
25
26#还有其他的很多的视图函数
27#.....


demo03user.py


1from flask import Blueprint
 2
 3#1.创建蓝图对象
 4user_blue = Blueprint("user",__name__)
 5
 6#2.使用蓝图装饰视图函数
 7@user_blue.route('/user_info')
 8def user_info():
 9
10    return "user_Info"


以包的形式使用蓝图

各个文件的关系

demo04package_Blueprint.py


1from flask import Flask
 2from user import user_blue
 3
 4app = Flask(__name__)
 5
 6#3.注册蓝图到app中
 7app.register_blueprint(user_blue)
 8
 9
10if __name__ == '__main__':
11    print(app.url_map)
12    app.run(debug=True)


user包的__init__.py


1from flask import  Blueprint
 2
 3#1.创建蓝图对象
 4#参数1: user,表示蓝图的名字,用来标识蓝图装饰的视图函数所属的蓝图
 5#参数2: __name__,固定写法,表示的是蓝图所在包的名字
 6#参数3: static_folder,用来存储静态文件的
 7#参数4: url_prefix,给所有使用user_blue装饰的视图函数都加上一个访问前缀
 8#参数5: template_folder,表示蓝图自己的模板文件, 如果app中也设置也自己的模板,如果文件名相同,那么优先访问app的
 9user_blue = Blueprint("user",__name__,static_folder="static",url_prefix="/user",template_folder="templates")
10print(__name__)
11
12#导入views文件
13from user import views


user包的views.py


1from flask import render_template
 2
 3from user import user_blue
 4
 5#2.装饰视图函数
 6@user_blue.route('/user_login')
 7def user_login():
 8
 9    return "user_login"
10
11
12#渲染模板
13@user_blue.route('/register')
14def register():
15
16    return render_template("file02user.html")


user包的templates文件夹的file02user.html


1<!DOCTYPE html>
 2<html lang="en">
 3<head>
 4    <meta charset="UTF-8">
 5    <title>Title</title>
 6    <style>
 7        .box{
 8            width: 300px;
 9            height: 300px;
10            background: yellow;
11        }
12
13    </style>
14</head>
15<body>
16
17    <div class="box">
18        我是一个孤独的div
19    </div>
20
21</body>
22</html>


user包的static文件夹下的haha.jpg




断言:demo05assert.py


1def division_number(num1,num2):
 2
 3    #判断num1,num2必须要整数
 4    assert isinstance(num1,int),"num1必须是一个整数"
 5    assert isinstance(num2,int),"num2必须是一个整数,并且不为0"
 6
 7    return num1/num2
 8
 9
10# print(division_number(10,5))
11# print(division_number("10",5))
12print(division_number(10,"5"))


demo06unittest.py


1"""
 2- 1.定义类,继承自unittest.TestCase
 3    继承自TestCase的类,可以直接单独运行
 4- 2.编写两个固定方法
 5  - setup: 测试开始的方法
 6  - teardown: 测试结束的方法
 7- 3.编写自己的测试方法
 8  - 必须以test开头
 9    光标放在哪个函数的内部,就执行哪个测试方法
10
11"""
12import unittest
13class MyTest(unittest.TestCase):
14
15    def setUp(self):
16        print("setup")
17
18    def test_login(self):
19        print("test_login")
20
21    def test_login2(self):
22        print("test_login2")
23
24
25    def tearDown(self):
26        print("teardown")


demo07databasetest.py


1"""
 2目的: 数据库添加数据是否正常
 3"""
 4from unittest import TestCase
 5from demo07library import app,db,Author,Book
 6#1.定义类,继承自TestCase
 7class DatabaseTest(TestCase):
 8
 9    #2.编写两个固定方法setup,teardown
10    def setUp(self):
11        #设置数据库的链接信息
12        app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/library36_test"
13
14        #创建数据库
15        db.create_all()
16
17    def tearDown(self):
18        db.session.remove()
19        db.drop_all()
20
21    #3.编写添加数据的测试方法
22    def test_db_addData(self):
23
24        #3.1创建作者对象
25        author = Author(name="laowang")
26
27        #3.2添加数据到数据库中
28        db.session.add(author)
29        db.session.commit()
30
31        import time
32        time.sleep(10)
33
34        #3.3查询数据
35        author2 = Author.query.filter(Author.name == "laowang").first()
36
37        #3.4断言
38        self.assertIsNotNone(author2, "取出来的作者2一定不是空")
39        self.assertEqual(author.name,author2.name,"两个对象中的名字必须要一样")


demo08redis.py


1"""
 2IDE操作string[掌握]
 3
 4- 操作流程:
 5  - 1.安装扩展包
 6    - pip install redis
 7  - 2.导入redis类
 8    - from redis import StrictRedis
 9  - 3.创建redis对象,关联ip,port
10  - 4.调用今天学习的redis相关的方法
11
12"""
13# 2.导入redis类
14from redis import StrictRedis
15
16# 3.创建redis对象,关联ip,port,decode_responses将redis取出来的数据自动解码
17redis_store = StrictRedis(host="127.0.0.1",port=6379,decode_responses=True)
18
19# 4.调用今天学习的redis相关的方法
20#增加数据,还可以设置有效期
21#参数1: name,表示key
22#参数2: banzhang,表示value
23#参数3: 100, 表示key-value的有效期,单位是秒
24redis_store.set("name","banzhang",100)
25
26#修改数据
27redis_store.set("name","laowang",100)
28
29#获取数据
30name = redis_store.get("name")
31# print(name.decode())
32print(name)
33
34#删除数据
35redis_store.delete("name")


demo09flask_session.py


1"""
 219_session指定存储位置
 3
 4- 定义: 用来存储敏感信息,存储在服务器内部
 5- 设置: session[key] = value
 6- 获取: value = session.get(key)
 7- 注意点: 设置SECRET_KEY
 8- 指定session存储到redis中
 9- 操作流程:
10  - 1.安装flask_session
11    - pip install flask_session
12  - 2.导入Session类
13    - from flask_sessiion import Session
14  - 3.设置session相关的配置信息到app中
15  - 4.读取app身上的配置信息(和session相关的)
16    - Session(app)
17
18"""
19from datetime import timedelta
20
21from flask import Flask,session
22from flask_session import Session
23from redis import StrictRedis
24
25app = Flask(__name__)
26
27#设置app的配置信息
28# app.config["SECRET_KEY"] = "fdfdfdfd"
29# app.config["SESSION_TYPE"] = "redis" #指定session的存储类型
30# app.config["SESSION_REDIS"] = StrictRedis() #指定redis服务器的地址
31# app.config["SESSION_USE_SIGNER"] = True #设置session的签名信息
32# app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(seconds=10) #设置session在redis中的存储时间
33
34#读取配置类,加载配置信息到app中
35class Config(object):
36    SECRET_KEY = "fdfdfdfd"
37    SESSION_TYPE = "redis"
38    SESSION_REDIS = StrictRedis()
39    SESSION_USE_SIGNER = True
40    PERMANENT_SESSION_LIFETIME = timedelta(seconds=10)
41
42app.config.from_object(Config)
43
44
45#读取app中关于session的配置信息
46Session(app)
47
48@app.route('/set_session')
49def set_session():
50
51    session["name"] = "laowang"
52
53    return "set_session"
54
55@app.route('/get_session')
56def get_session():
57
58    value = session.get("name")
59
60    return "name is %s"%value
61
62if __name__ == '__main__':
63    app.run(debug=True)
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
158 71
|
2月前
|
开发者 数据库管理 Python
Django框架和Flask框架的区别
总体而言,Django 适合需要快速搭建大型应用的开发者,而 Flask 则更适合有特定需求和追求灵活性的开发者。
125 64
|
3天前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
2月前
|
安全 网络安全 数据安全/隐私保护
Flask框架的安全机制与其他框架相比有哪些优势和劣势?
总的来说,Flask 的安全机制在灵活性和可扩展性方面有其独特优势,但也需要开发者在安全方面投入更多的精力和努力,以确保应用的安全可靠运行。
57 11
|
1月前
|
SQL 安全 Java
除了Flask框架,还有哪些框架能防止SQL注入攻击?
这些框架都在安全方面有着较好的表现,通过它们的内置机制和安全特性,可以有效地降低 SQL 注入攻击的风险。然而,无论使用哪个框架,开发者都需要具备良好的安全意识,正确配置和使用框架提供的安全功能,以确保应用的安全可靠。同时,持续关注安全更新和漏洞修复也是非常重要的。
47 7
|
2月前
|
搜索推荐 API 开发者
Django框架和Flask框架的适用场景分别是什么?
总体而言,Django 更适合需要全面功能和大规模开发的场景,而 Flask 则更适合灵活性要求高、小型项目或特定需求的开发。当然,具体的选择还应根据项目的具体情况、团队的技术能力和偏好等因素来综合考虑。在实际应用中,开发者可以根据项目的特点和需求,灵活选择使用这两个框架,或者结合它们的优势来构建更强大的 Web 应用程序。
|
2月前
|
安全 数据安全/隐私保护 开发者
Flask框架的安全性如何?
安全是一个持续的过程,需要不断地关注和更新。随着新的安全威胁的出现和技术的发展,开发者需要及时了解并采取相应的措施来应对,以确保 Flask 应用始终处于安全的状态。
|
8月前
|
前端开发 安全 JavaScript
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
Python的Flask框架的学习笔记(前后端变量传送,文件上传,网页返回)内含实战:实现一个简单的登录页面
192 0
|
开发框架 前端开发 Python
flask框架【入门学习笔记一】
flask框架【入门学习笔记一】
flask框架【入门学习笔记一】
|
Web App开发 网络协议 iOS开发
类 Flask 框架请求封装| 学习笔记
快速学习类 Flask 框架请求封装
553 0
类 Flask 框架请求封装| 学习笔记