当前位置: 首页 > wzjs >正文

绵阳网站排名装修设计师怎么学室内装修设计

绵阳网站排名,装修设计师怎么学室内装修设计,高州网站seo,福州发布最新通报我一直以来是Django重度用户。它有清晰的MVC架构模式、多应用组织结构。它内置用户认证、数据库ORM、数据库迁移、管理后台、日志等功能,还有强大的社区支持。再搭配上Django REST framework (DRF) ,开发起来效率极高。主打功能强大、易于使用。 曾经也…

我一直以来是Django重度用户。它有清晰的MVC架构模式、多应用组织结构。它内置用户认证、数据库ORM、数据库迁移、管理后台、日志等功能,还有强大的社区支持。再搭配上Django REST framework (DRF) ,开发起来效率极高。主打功能强大、易于使用。

曾经也用Flask开发过提供纯API不涉及数据库操作的项目,相对Django确实简洁、灵活。但没留下什么较好的深刻印象。

最近,听说朋友在用FastAPI开发项目,主打高性能和强大的异步处理能力。而且在网上看到「Flask已死,FastAPI是未来」的说法。于是开始学习FastAPI。

纯API的FastAPI项目

看了下官方文档:https://fastapi.tiangolo.com/zh/learn/

发现搭建一个纯API的小项目,用FastAPI确实好啊。

比如一个提供固定博文展示和邮件发送的项目,目录如下。在blogs.py、emails.py中配路由写业务逻辑就行。

fastapi-pure-api-case
├── routers
│   ├── blogs.py
│   └── emails.py
├── README.md
└── main.py

涉及数据库操作的多应用FastAPI项目

想到之前写过的有近20个子应用、完全数据库增删改查、数据model经常变化要重度维护数据库迁移文件的中型Django项目。我觉得用FastAPI适合微服务,这种复杂项目实现起来应该很难吧。看了官方文档,依然摸不着头脑。

一、我尝试用Django的目录结构,搭建个多子应用的FastAPI项目。类似结构如下:

my_project/
│── alembic/
│── alembic.ini
│── users/              # 用户管理应用
│   ├── urls.py         # 路由
│   ├── serializers.py  # Pydantic 模型
│   ├── views.py        # 业务逻辑
│   ├── models.py       # SQLAlchemy 模型
│   └── utlis.py        # 应用级工具集
│
│── blogs/              # 博客应用
│── ...                 # 其他应用
│
├── core/                   # 核心基础设施
│   ├── database.py         # 数据库连接
│   ├── settings.py         # 配置管理     		  
│   └── urls.py             # 路由集中配置
│
├── utils/                  # 公共工具
│   ├── auth.py             # 认证工具
│   └── logging.py          # 日志配置
├── main.py                 # 主入口文件
└── requirements.txt        # 依赖文件

按上述目录结构搞了一天,总感觉不伦不类的。但至少弄明白了三件事:

1、FastAPI中要轻松操作数据库,要自行选择第三方ORM工具,如SQLAlchemy 。创建数据Model要用到SQLAlchemy模型。数据库操作要显式创建并引用session。

2、Pydantic模型用来数据验证、数据序列化。与ORM是完全解耦的。

3、实现数据库迁移管理,要自行选择第三方工具,如alembic.ini。

二,一些成熟的项目实践参考

在自己探索一番觉得不太行后,想着FastAPI这么火,网上应该有一些比较成熟的组织项目结构的方案。

在一些搜索后,还真找到了一些:

FastAPI 最佳实践文档:https://github.com/zhanymkanov/fastapi-best-practices

FastAPI 最佳实践文档(中文翻译):https://gitee.com/ktianc/fastapi-best-practices

FasAPI实践之MySQL:https://github.com/fastapi-practices/fastapi_sqlalchemy_mysql

FasAPI 最佳架构文档:https://fastapi-practices.github.io/fastapi_best_architecture_docs/

FastAPI最佳架构项目示例:https://github.com/fastapi-practices/fastapi_best_architecture

看了上面的项目,并实践后。我意识到只要架构做好,FastAPI也可以类似Django用来开发中大型项目,同时保持高性能。

FastAPI与Django的选择

体验下来。FastAPI的优势在于高性能和强大的异步处理能力,但相对Django开发效率会低很多。

对性能、高并发、异步处理要求没那么高的企业级应用,选择Django还是比较合适,有20年历史,很多方面有成熟解决方案。

对于大型系统,可结合两者优势:

  • Django:用户认证、内容管理、后台运营
  • FastAPI:移动端API、实时数据处理、微服务接口

这种架构既能利用 Django 的开发效率,又能发挥 FastAPI 的性能优势,是大型项目的理想选择。

功能Django 内置支持FastAPI 需要额外集成
ORMDjango ORM (强大且易用)SQLAlchemy/SQLModel (需学习)
管理后台Django Admin (开箱即用)SQLAdmin/Django Admin 移植
用户认证完整认证系统 (Session/Auth组)需手动实现 (JWT/OAuth2)
表单处理Form 和 ModelForm 系统依赖 HTML 前端框架
模板引擎Jinja2/Django 模板语言需单独集成
路由系统URLconf 自动处理需手动组织 APIRouter
国际化完整 i18n/l10n 支持需第三方库

实际影响:新项目启动时,Django 可节省 40-60% 的初始配置时间。

FastAPI中型项目的一些目录结构参考

my_project/
├── apps/                   # 核心应用目录(类似 Django 的 apps)
│   ├── users/              # 用户管理应用
│   │   ├── routers.py      # 路由
│   │   ├── schemas.py      # Pydantic 模型
│   │   ├── services.py     # 业务逻辑
│   │   ├── models.py       # SQLAlchemy 模型
│   │   └── dependencies.py # 应用级依赖
│   │
│   ├── products/           # 产品管理应用
│   ├── orders/             # 订单管理应用
│   └── ...                 # 其他应用
│
├── core/                   # 核心基础设施
│   ├── database.py         # 数据库连接
│   ├── config.py           # 配置管理
│   ├── middleware.py       # 中间件
│   ├── exceptions.py       # 异常处理
│   └── dependencies.py     # 全局依赖项
│
├── tests/                  # 测试目录
│   ├── unit/               # 单元测试
│   └── integration/        # 集成测试
│
├── utils/                  # 公共工具
│   ├── auth.py             # 认证工具
│   └── logging.py          # 日志配置
│
├── static/                 # 静态文件
├── templates/              # Jinja2 模板(可选)
├── alembic/                # 数据库迁移
├── main.py                 # 主入口文件
└── requirements.txt        # 依赖文件
fastapi-project
├── alembic/
├── src
│   ├── auth
│   │   ├── router.py
│   │   ├── schemas.py  # pydantic models
│   │   ├── models.py  # db models
│   │   ├── dependencies.py
│   │   ├── config.py  # local configs
│   │   ├── constants.py
│   │   ├── exceptions.py
│   │   ├── service.py
│   │   └── utils.py
│   ├── aws
│   │   ├── client.py  # client model for external service communication
│   │   ├── schemas.py
│   │   ├── config.py
│   │   ├── constants.py
│   │   ├── exceptions.py
│   │   └── utils.py
│   └── posts
│   │   ├── router.py
│   │   ├── schemas.py
│   │   ├── models.py
│   │   ├── dependencies.py
│   │   ├── constants.py
│   │   ├── exceptions.py
│   │   ├── service.py
│   │   └── utils.py
│   ├── config.py  # global configs
│   ├── models.py  # global models
│   ├── exceptions.py  # global exceptions
│   ├── pagination.py  # global module e.g. pagination
│   ├── database.py  # db connection related stuff
│   └── main.py
├── tests/
│   ├── auth
│   ├── aws
│   └── posts
├── templates/
│   └── index.html
├── requirements
│   ├── base.txt
│   ├── dev.txt
│   └── prod.txt
├── .env
├── .gitignore
├── logging.ini
└── alembic.ini

单app的结构模式

模块javafastapi_best_architecture
视图controllerapi
数据传输dtoschema
业务逻辑service + implservice
数据访问dao / mappercrud
模型entitymodel

文章转载自:

http://2Gd9DbQW.xgtxL.cn
http://10PDZSKW.xgtxL.cn
http://OjngIBlW.xgtxL.cn
http://uIYQRv6j.xgtxL.cn
http://TPVKYHbz.xgtxL.cn
http://HQiypykd.xgtxL.cn
http://egw951Jn.xgtxL.cn
http://AoxWZlgf.xgtxL.cn
http://IoBESHlP.xgtxL.cn
http://DrAL3Xy2.xgtxL.cn
http://idQOZ5j2.xgtxL.cn
http://RWRzaynu.xgtxL.cn
http://y1iT5WwI.xgtxL.cn
http://j0v6gQzu.xgtxL.cn
http://l8qn0Yi5.xgtxL.cn
http://ucc7x9vh.xgtxL.cn
http://DmvJnvvK.xgtxL.cn
http://20fYFHrl.xgtxL.cn
http://1HODfe49.xgtxL.cn
http://v4hIA2e5.xgtxL.cn
http://4SgcS9CX.xgtxL.cn
http://KIQAlxD8.xgtxL.cn
http://DgCT1gKv.xgtxL.cn
http://KIUBcOhH.xgtxL.cn
http://qtu6sp7o.xgtxL.cn
http://z8LZFyfy.xgtxL.cn
http://Tqyb6hcf.xgtxL.cn
http://t4K2fab1.xgtxL.cn
http://j8I4uW8S.xgtxL.cn
http://YYjvADp2.xgtxL.cn
http://www.dtcms.com/wzjs/737867.html

相关文章:

  • 南昌汉邦网站建设2018做网站前景好么
  • 网站服务合同用交印花税吗做网站要买什么空间
  • 网站建设中端口号的作用是什么商务网站创建经费预算
  • 旅游网站怎么做的qq wordpress登陆
  • 胶南做公司网站湖北建设银行网站首页
  • 企业官网建站步骤做网站为什么要服务器
  • 亚马逊做超链接的网站怎么写网站建设的说明
  • 电子商务网站的建设流程是怎样的ASP.NET与网站开发编程实战
  • 青岛西海岸新区城市建设局网站页面设计时最好只使用一种颜色避免视觉效果混响
  • 专业网站优化方案教师遭网课入侵直播录屏曝光口
  • 网站渠道建设180天做180个网站
  • 在国税网站怎么做实名大连手机自适应网站建设公司
  • 网站内部优化策略网站怎么自己做服务器
  • 湛江模板做网站域名建设网站
  • wordpress 4.3.4下载网站优化流程
  • 嘉兴做网站的公司免费网络连接软件
  • 项目宣传网站模板wordpress 去除 栏头
  • 做网站设计师的原因快速网站建设费用
  • 开源网站开发文档下载seo是什么职业岗位
  • 广西南宁官方网站企业网页生成器
  • 网站不被收录的原因网站备案信息是什么意思
  • 怎么自己做淘宝客网站免费最好网站建设
  • 企业网站开发有哪些做外单网站有哪些内容
  • 中国电信网站备案管理系统工程建设范围
  • 红酒网站制作江苏省建设档案网站
  • 网站怎么运营推广企业为什么要建立集团
  • 小游戏网站模板品牌手表网站
  • 怎么快速做网站广西城乡和住房建设厅网站首页
  • 网站开发需求表建设银行论坛网站
  • 出格做网站怎么样广州天河建网站的公司