如何编写一个|如何编写一个 Python Web 应用 (零)

最近在为一个开源社区开发一个 FAQ (Frequently Asked Questions) 服务模块, 开发语言我选择了 Python. 这也是我第一次使用 Python 编写 Web服务. 之前我一直习惯用 Java 来进行 Web 后端开发, 而我熟悉的一套最基础的 Java Web 技术栈是这样的:

  • Spring X: 整个应用的框架, 这里的 'X' 包括 'boot', 'cloud', 等等
  • Mybatis/Mybatis-plus: 数据库 ORM
  • Mybatis-plus-generator: 逆向工程, 即由数据库生成 DAO. 但它能做的不止于此, 它还可以生成整个目录结构
  • fastjson/gson/jackson: json 解析
  • Maven/gradle: 依赖管理. 使用一个 pom.xml/build.gradle 文件使得项目可以快速构建环境
而与之对应的, Python 中的一套最基本的技术栈:
  • Flask: 整个应用的框架
  • Flask-SQLAlchemy: SQLAlchemy 在 flask 中的插件. 用于数据库 ORM. 相比 Java, 它提供了更灵活的接口, 尤其是对于复杂关系
  • flask-sqlacodegen: 针对 SQLAlchemy 的逆向工程
  • jsonschema: 用于 json 请求体的校验
  • pip: 依赖管理. 对于 Web 开发来说, pip 已经足够了
当然还有其他选择,毕竟工程问题,没有真理。比如同样很火的框架 Django 也很值得一试,但我个人更习惯 flask 的轻量灵活性
Ok~下面是接下来的文章内容,开始阅读吧:
目录:
  • 第一章:Flask
    • Application Context
    • View Functions & CLI Command
    • Blueprints 蓝图
  • 第二章:Flask-SQLAlchemy
    • 简单增删改查
    • 复杂关系: 一对一, 一对多
    • 使用 sqlacodegen 实现针对 SQLAlchemy 的逆向工程
  • [https://segmentfault.com/a/11...
  • 【如何编写一个|如何编写一个 Python Web 应用 (零)】第四章:效率提升——使用 PowerShell 指令配置 Pycharm run configuration 实现自动逆向工程与自动更新依赖文件 requirements.txt
    • 自动逆向工程
    • 自动更新配置文件
    • Pycharm run/debug configurations

    推荐阅读