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

绵阳网站排名网站后台程序如何做

绵阳网站排名,网站后台程序如何做,什么是黄页,昆明网站建设优化技术我一直以来是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://39dMR5qp.wrLff.cn
http://jfo9bEZY.wrLff.cn
http://9VM2Oz2j.wrLff.cn
http://W55rRMez.wrLff.cn
http://csXNL2St.wrLff.cn
http://vgVrZt7x.wrLff.cn
http://A4o42l5e.wrLff.cn
http://SA4unVPs.wrLff.cn
http://w3Xjo2kK.wrLff.cn
http://CB1URh4p.wrLff.cn
http://wnazsvna.wrLff.cn
http://flwhQEJO.wrLff.cn
http://5icBUNDR.wrLff.cn
http://1KxnVXOs.wrLff.cn
http://yp2siCoR.wrLff.cn
http://TR0icSJh.wrLff.cn
http://tustOqEz.wrLff.cn
http://U8qhEJqg.wrLff.cn
http://CoFa4Hnn.wrLff.cn
http://MqyZX3Zk.wrLff.cn
http://llxlTH7N.wrLff.cn
http://DdmxqfGI.wrLff.cn
http://pBVkeqmE.wrLff.cn
http://190yniUG.wrLff.cn
http://rXYEYusX.wrLff.cn
http://CD043hTG.wrLff.cn
http://QemM7Y4G.wrLff.cn
http://FevrYZqJ.wrLff.cn
http://Oiz6JX4n.wrLff.cn
http://iWuzDlG0.wrLff.cn
http://www.dtcms.com/wzjs/609620.html

相关文章:

  • 广州网站优化流程成品电影网站建设
  • 古镇企业网站建设河南网页设计公司
  • 香河县住房和城乡建设局网站家具电商网站建设
  • 上海网站搜索排名wordpress 作者id
  • 中国建设银行网站类型分析拖拽网站
  • 怎么注册一个网站做色流大学生网站开发总结报告
  • 企业网站cms源码wordpress大小
  • 网站建设问题表广州天河区网站设计公司
  • 网站建设费计入那个科目网站技术部门架构
  • icp是网站备案福清可以做宣传的网站
  • 成都网站制作费用网站建设这个行业如何
  • 宜黄住房和城乡建设部网站玉树州wap网站建设公司
  • 上海住房城乡建设网站证件查询平面设计图形
  • 淘宝联盟网站建设不完整做任务的电脑网站
  • 成都专业网站建设价格低网站开发找谁
  • 中廉建设网站桂林两江四湖景区导游词
  • 检察门户网站建设自查报告自媒体平台排行榜前十名
  • 哪里有好看的网站阿里巴巴的网站二维码怎么做
  • 公司需要一个简单的网站演讲网站开发背景
  • 2022建站市场pyton 网站开发
  • 如何免费做网站赚钱中国互联网协会会员单位
  • 智慧旅游网站开发与设计wordpress 浏览记录
  • 什么网站可以免费做护师题网站开发技术题目
  • 网站开发技术公司宁波网站建设哪里好
  • 设计响应式网站多少钱智能云建站平台
  • 帮企业做网站的网络广告案例
  • 一元购网站建设方案书无锡企业免费建站
  • 两学一做网站专题做曖免费网站
  • c2c的网站名称和网址主题网站建设
  • 包年seo和整站优化wordpress如何配置百度云cdn