Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flask 终极教程学习笔记

原文链接:The Flask Mega-Tutorial
作者:Miguel Grinberg


章节目录

Chapter 1:你好,世界!

  • 技术栈:Flask
  • 实现功能:Flask环境搭建与项目结构初始化,创建了一个可扩展的包结构并启动了开发服务器。
  • 解决问题:如何从零开始搭建一个基础的、结构清晰的Flask应用。

Chapter 2:模板

  • 技术栈:Flask, Jinja2
  • 实现功能:定义了模板,支持条件语句、循环和模板继承,实现了动态内容展示。
  • 解决问题:如何将业务逻辑与表现层分离,以及如何复用前端代码。

Chapter 3:Web 表单

  • 技术栈:Flask, Flask-WTF, WTForms
  • 实现功能:创建和验证表单,配置CSRF保护,实现表单验证、错误反馈和用户消息提示,优化了代码组织。
  • 解决问题:如何安全地处理用户输入、提供交互式体验以及改善应用的安全性。

Chapter 4:数据库

  • 技术栈:Flask, SQLAlchemy, Alembic (Flask-Migrate)
  • 实现功能:集成SQLAlchemy ORM,设计并实现了User和Post数据模型及其关系,配置了数据库迁移管理。
  • 解决问题:如何为应用添加持久化数据存储,以及如何优雅地管理数据库模式变更。

Chapter 5:用户登录

  • 技术栈:Flask, Flask-Login, Werkzeug
  • 实现功能:实现了用户注册、登录、会话管理和安全登出流程,使用密码哈希增强安全性,并使用装饰器保护路由。
  • 解决问题:如何构建一个完整的用户身份验证系统。

Chapter 6:个人资料页与头像

  • 技术栈:Flask, SQLAlchemy, Gravatar
  • 实现功能:扩展了用户模型,实现了用户资料的展示与编辑,集成了Gravatar头像,并自动追踪用户活动时间。
  • 解决问题:如何管理用户个人资料和提升用户页面的友好性。

Chapter 7:错误处理

  • 技术栈:Flask
  • 实现功能:实现了自定义的404和500错误页面,启用了调试模式和自动重载,分离了错误处理逻辑。
  • 解决问题:如何为用户提供友好的错误页面,并为开发者提供更好的调试体验。

Chapter 8:关注者

  • 技术栈:Flask, SQLAlchemy
  • 实现功能:实现了用户之间的多对多关注关系,创建了用户时间线,并引入了完整的单元测试套件。
  • 解决问题:如何构建社交网络中的核心关注功能,并保证代码质量。

Chapter 9:分页

  • 技术栈:Flask
  • 实现功能:为列表数据添加了分页功能,并配置了生产级的日志记录与错误邮件通知。
  • 解决问题:如何处理大量数据的分页展示,以及如何监控生产环境中的应用状态。

Chapter 10:电子邮件支持

  • 技术栈:Flask, Flask-Mail, JWT
  • 实现功能:实现了完整的异步邮件发送系统,支持基于令牌的密码重置流程,扩展了帖子发布与探索功能。
  • 解决问题:如何集成邮件服务、实现后台任务以及增强应用的安全性。

Chapter 11:外观美化

  • 技术栈:Flask, Bootstrap 5, WTForms
  • 实现功能:使用Bootstrap 5框架美化了所有界面,实现了响应式布局和统一的视觉风格。
  • 解决问题:如何快速为应用构建现代化、美观且兼容多设备的用户界面。

Chapter 12:日期和时间

  • 技术栈:Flask, Flask-Moment, moment.js
  • 实现功能:集成了Flask-Moment,在客户端实现了相对时间格式化(如“X分钟前”)和时区处理。
  • 解决问题:如何提升时间显示的用户体验,并减轻服务器的时间处理负担。

Chapter 13:国际化和本地化

  • 技术栈:Flask, Flask-Babel
  • 实现功能:为应用添加了多语言支持(英语、西班牙语),实现了自动语言检测和完整的翻译工作流程。
  • 解决问题:如何使应用支持国际化,以适应不同地区的用户。

Chapter 14:Ajax

  • 技术栈:Flask, JavaScript (AJAX), Flask-Babel
  • 实现功能:为帖子内容添加了语言识别,通过AJAX实现了实时翻译功能,并完善了邮件的国际化支持。
  • 解决问题:如何为用户生成的内容提供多语言支持,并实现无刷新的交互体验。

Chapter 15:更优的应用程序结构

  • 技术栈:Flask, Blueprints
  • 实现功能:使用蓝图将应用重构为按功能划分的独立模块,提高了代码的可维护性和可扩展性。
  • 解决问题:如何组织大型Flask应用的代码结构,以利于团队协作和长期维护。

Chapter 16:全文搜索

  • 技术栈:Flask, Elasticsearch, SQLAlchemy
  • 实现功能:集成了Elasticsearch,实现了全文搜索、相关性排序和分页,并通过事件监听器同步索引。
  • 解决问题:如何为应用添加高效、实时的全文搜索能力。

Chapter 17:在 Linux 上部署

  • (略)

Chapter 18:在 Heroku 上部署

  • (略)

Chapter 19:在 Docker 容器中部署

  • 技术栈:Flask, Docker, Gunicorn, Nginx, Supervisor
  • 实现功能:将应用容器化,配置了Gunicorn服务器、Nginx反向代理和Supervisor进程管理,实现了生产级部署。
  • 解决问题:如何将Flask应用打包并部署到容器化环境中,解决服务依赖和启动顺序问题。

Chapter 20:一些 JavaScript 魔法

  • 技术栈:Flask, Bootstrap, JavaScript
  • 实现功能:实现了用户信息弹出窗口(Popover),支持异步加载用户数据和即时关注操作。
  • 解决问题:如何在不跳转页面的情况下提供丰富的用户交互,提升用户体验。

Chapter 21:用户通知

  • 技术栈:Flask, SQLAlchemy, JavaScript
  • 实现功能:实现了用户间私人消息系统和实时通知推送,前端通过轮询更新未读消息计数。
  • 解决问题:如何构建实时通信和通知机制,增强应用的社交互动性。

Chapter 22:后台任务

  • 技术栈:Flask, RQ (Redis Queue), Redis
  • 实现功能:集成RQ实现了异步任务处理系统,支持用户帖子导出等长时间任务,并提供了进度实时监控。
  • 解决问题:如何优雅地处理耗时操作,避免阻塞主请求,并提供任务执行反馈。

Chapter 23:应用程序编程接口(APIs)

  • 技术栈:Flask
  • 实现功能:设计并实现了RESTful API,支持令牌认证、分页、内容协商和标准的错误处理。
  • 解决问题:如何为现有Web应用提供一套规范的、可编程的接口,供第三方客户端使用。

本笔记为学习《Flask Mega-Tutorial》的整理内容,涵盖从基础到高级的 Flask 开发知识。

About

The-Flask-Mega-Tutorial学习笔记

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages