连着2天没有记录,身体不是太好
今天开始继续记录
这本书的第七章留言板和第八章个人博客,我原以为这后面的内容只是单纯的利用前面所学的知识做一些项目
没想到是一边做项目一边需要继续学习新的一些内容
这几章内容个人觉得编写的有些过于杂乱,让人初读难以理解,不过姑且还是先整理记录一下
首先是第七章:留言板
这一章我觉得唯一的重点就只有“包组织对象”这一块内容
在前面的内容中,所有的代码都是全部放在一个模块(py文件)之中去执行的,当项目简单的时候可以这样做
当项目变得复杂以后,可以选择把模块升级为包
Q:什么是模块?什么是包?
在python中,每一个有效的python文件都是模块,每一个包含__init__.py文件的文件夹都是包
__init__.py文件通常被称为构造文件,文件可以为空,也可以用来放置包的初始化代码
当包或包内的模块被导入时,构造文件将会被自动执行
关于配置
之前的配置都是通过config来写入,使用包的时候可以把配置写到settings.py中
再单独的文件中定义配置时,不再使用config对象来添加配置,而是以键值对的形式写出
创建程序实例
使用包组织代码后,创建程序实例、初始化拓展等操作可以在构造文件中实现
__init__.py
app=Flask('sayhello')
app.config.from_profile('setting.py')
db=SQLALchemy(app)
from sayhello import views,errors,commands
在单脚本中创建程序实例时我们传__name__变量值
但是使用包组织代码时最好以硬编码的形式写出包名称作为程序名称
为了让使用程序实例app的各种处理程序能和程序实例关联起来,需要在文件末尾导入
之后还讲了下生成虚拟数据的方法
fake=Faker('zh_CN')
第八章是个人博客
第一个是重点是蓝本
比如把views.py转换成blueprints子包,views.py的内容被转化成auth.py,blog.py,admin.py
实例化蓝本类
from flask import Blueprint
blog=Blueprint('blog',__name__)
第一个参数的蓝本名称
Q:蓝本的创建?
蓝本一般在子包中创建,比如创建一个blog子包,然后在构造文件中创建蓝本实例
在简单的程序中也可以直接在模块中创建蓝本实例
在蓝本对象的名称后可以添加一个_bp,更容易区分蓝本对象
装配蓝本
@auth_bp.route('/login')
注册蓝本
app.regsiter_blueprint(auth_bp)
如果加一个url_prefix前缀,蓝本下的视图的url前都会加上前缀
蓝本的路由端点
当你在蓝本中定义路由时,端点的名称会由蓝本名和视图函数名组合而成
蓝本的路由端点通过使用蓝本名.视图函数名的形式,有助于避免不同模块之间的命名冲突,增强代码的可读性和组织性,使大型应用的结构更加清晰。
蓝本资源
如果程序的不同蓝本的页面需要截然不同的样式,可以把蓝本定义为独有的静态文件和模板
这时需要把蓝本模块升级为包,在构造文件中创建蓝本实例
并在蓝本包中创建static和templates文件夹
如果要使用蓝本独有的静态文件,需要在定义蓝本时使用static_folder关键字指定蓝本的静态文件文件夹路径