Github地址: https://github.com/yingzk/flask_notes
学习Flask的笔记
加上一个BBS论坛项目
博客: https://www.yingjoy.cn
里面有在线笔记~
笔记1(1-4): https://www.yingjoy.cn/flask-notes/1
笔记2(5-18): https://www.yingjoy.cn/flask-notes/2
笔记3(19-26): https://www.yingjoy.cn/flask-notes/3
笔记4(26-28): https://www.yingjoy.cn/flask-notes/4
笔记5(29-37): https://www.yingjoy.cn/flask-notes/5
笔记6(38-49): https://www.yingjoy.cn/flask-notes/6
笔记7(50-57): https://www.yingjoy.cn/flask-notes/7
笔记8(58-67): https://www.yingjoy.cn/flask-notes/8
笔记9(68-75): (https://www.yingjoy.cn/flask-notes/9
笔记10(76): https://www.yingjoy.cn/flask-notes/10
1. 课程准备
环境
安装虚拟环境
安装Flask
2. 认识Web
2.1 URL(Uniform Resource Locator) 统一资源定位符
2.2 Web服务器和应用服务器以及Web应用框架
web服务器:
应用服务器:
web应用框架:
3. Flask入门
Flask简介
Flask的特点
4. 第一个Flask程序
5. Debug模式
配置Debug模式的四种方式
6. 配置文件
6.1 使用app.config.from_object(config)来加载配置文件
6.2 使用app.config.from_pyfile(‘config.py’)来加载配置文件
7. URL与视图函数的映射:
传递参数:
参数的数据类型:
接收用户传递的参数:
8.url_for()
url_for的基本使用:
为什么需要url_for:
强烈建议以后在使用url的时候,使用url_for来反转url
9. 自定义URL转换器
自定义URL转换器的方式:
to_python的作用:
to_url的作用:
10. 其它细节问题
在局域网中让其他电脑访问我的网站:
指定端口号:
url唯一:
GET请求和POST请求:
11. 重定向笔记:
flask中重定向:
12. response:
视图函数中可以返回哪些值:
实现一个自定义的Response对象:
13. Jinja2介绍及查找路径
使用其它目录作为模板文件目录
Jinja2简介
Jinja2的特点
引申: Marko
14. Jinja2模板传参及技巧
15. 模板中使用url_for()
16. 过滤器的基本使用
17. 自定义过滤器
18. 自定义时间过滤器
19. Jinja2模板中的if语句
20. Jinja2模板中的for循环语句
21. 案例 - Jinja2实现九九乘法表
22. 宏的概念和基本使用方法
导入宏:
23. include标签
24. set和with语句
25. 加载静态文件
26. 模板继承
为什么需要模版继承:
模版继承语法:
block语法:
调用父模版代码block中的代码:
调用另外一个block中的代码:
其他注意事项:
26. add_url_rule和approute原理解析
add_url_rule(rule,endpoint=None,view_func=None)
app.route(rule,**options)装饰器:
27. 类视图
标准类视图:
基于请求方法的类视图:
类视图中的装饰器:
28. 蓝图的基本使用
28.1 基本语法:
蓝图实现子域名:
29. MySQL数据库
安装:
MySQL Workbench
30. SQLAlchemy连接数据库
使用SQLAlchemy连接数据库:
31. ORM(Object Relationship Mapping)框架
将ORM模型映射到数据库中:
32. ORM中的增删改查
用session做数据的增删改查操作
33. SQLAlchemy中常用的数据类型
34. Column常用参数
35. query函数的参数
36. filter过滤条件
37. 外键和四种约束
38. ORM关系以及一对多:
39. 一对一的关系:
40. 多对多的关系:
41. ORM层面删除数据注意事项
42. relationship中的cascade参数
43. 三种排序
44. limit、offset及切片(slice)操作
45. 数据库的懒加载技术
46. 高级查询
group_by
having
join
subquery:
47. Flask-SQLAlchemy
安装:
数据库连接:
创建ORM模型:
将ORM模型映射到数据库:
使用session:
查询数据:
48. alembic数据库迁移工具
安装
常用命令:
经典错误:
49. flask-sqlalchemy中配置alembic
50. Flask-Script
命令的添加方式:
51. 项目中的循环引用问题
52. Flask-Migrate
安装:
在manage.py中的代码:
flask_migrate常用命令:
53. Flask-WTF
做表单验证:
常用的验证器:
自定义验证器:
54. 使用WTForms渲染模板
55. 文件上传
56. 使用flask_wtf对上传文件使用表单验证:
57. Cookie和Session
什么是cookie:
flask操作cookie:
session:
flask操作session:
58. CSRF攻击与防御
CSRF攻击原理
防御CSRF攻击
AJAX的CSRF保护
59. Local线程隔离对象
Thread Local对象
60. app上下文和request上下文
为什么上下文需要放在栈中:
62. 保存全局对象的g对象:
63. 常用的钩子函数:
64. 信号机制及使用场景
65. Flask内置的信号:
66. Restful API规范
协议
数据传输格式
url链接
HTTP请求的方法
状态码
67. Flask-Restful
安装:
基本使用:
参数验证:
重命名属性:
默认值:
复杂结构:
Flask-restful注意事项:
68. Memcached
69. Memcached的安装和启动
70. Memcached 的参数
71. 使用Telnet操作memcached
- 添加数据
- 获取数据
- 删除数据 其它
72. 使用Python操作Memcached
- 安装python-memcached
- 建立连接
- 设置数据
- 获取数据
- 删除数据
- 自增
- 自减
73. Memcached的安全机制
74. Redis
- Redis的使用场景
- Redis和Memcached的比较
- Redis的安装
- Redis的操作
- 操作列表
- 操作集合(set)
- 操作哈希(hash)
- 事务操作
- 发布/订阅操作
- 数据持久化
- 给redis指定密码
- 其他机器连接redis
75. Python操作Redis
安装
建立连接
对字符串进行操作
对列表进行操作
事务(管道)操作
发布与订阅
76. 部署
在开发机上做准备
在服务器上的准备工作
安装uwsgi
编写uwsgi配置文件:
安装nginx:
收集静态文件:
编写nginx配置文件:
使用supervisor配置:
nginx+uwsgi+supervisor关系图