头图

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

最近在为一个 openeuler 社区开发一个 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~下面是接下来的文章内容,开始阅读吧:

目录:

不想单纯只会编码。。

4 声望
1 粉丝
0 条评论
推荐阅读
【CS 285 DRL Homework 2】Policy Gradients 策略优化
主要的训练算法集中在 RL_Trainer.run_training_loop 中。通过观察一个循环(iteration)的调用过程,可总结为:

Petrickstar阅读 617

MongoDB 插入时间与更新时间(create_time/update_time)
MongoDB 在数据库层面不能像 MySQL 一样设置自动创建 create_time/update_time,自动更新 update_time

qbit阅读 14k评论 2

汽车行业场景化营销新方向:基于 WebGL 的网上虚拟车展
车展作为车市的风向标,代表着汽车发展的趋势,也是厂商展示自己、推广自己的舞台。WebGL 作为一种新兴的技术,为 Web 端提供了交互式三维动画新体验,汽车之家的网上车展就是两者结合之后的一种新的产品形态。

之家技术阅读 4.8k

封面图
SpringMVC-ResponseBodyAdvice
ResponseBodyAdvice接口可以在将handler方法的返回值写入response前对返回值进行处理,例如将返回值封装成一个与客户端约定好的对象以便于客户端处理响应数据。本篇文章将学习如果使用ResponseBodyAdvice以及其实...

半夏之沫2阅读 4.3k

uwsgi 注意事项
http 和 http-socket 选项是完全不同的。第一个生成一个额外的进程,转发请求到一系列的worker (将它想象为一种形式的盾牌,与apache或者nginx同级),而第二个设置worker为原生使用http协议。

zed2015阅读 2.2k

SpringMVC-RequestMappingHandlerMapping
使用SpringBoot进行web开发时,控制器类由@RestController注解修饰,通常@RestController注解与@RequestMapping配合使用,被修饰的类用于处理由DispatcherServlet分发下来的web请求。那么当一个web请求到达时,Di...

半夏之沫2阅读 1.8k

SpringMVC-RequestMappingHandlerAdapter
在SpringMVC-RequestMappingHandlerMapping中对web请求到来时如何获取处理该请求的handler进行了分析,那么获取到web请求对应的handler之后,SpringMVC框架还会根据handler获取其对应的HandlerAdapter,handler的...

半夏之沫1阅读 1.4k

不想单纯只会编码。。

4 声望
1 粉丝
宣传栏