基于 FastAPI 的房源租赁系统设计与实现

本文介绍了一个基于 FastAPI 构建的房源租赁系统,涵盖项目背景、特色、体验、启动、部署及代码细节。系统支持租客浏览、预定房源,房东发布房源及订单管理等功能。采用 Tortoise-ORM 进行数据库操作,利用七牛云、阿里支付等第三方服务,并实现了异步发送短信验证码、动态渲染电子合同等功能。前端使用 Vue.js 和 Bootstrap。项目源码已开源。
摘要由CSDN通过智能技术生成

项目背景

传统的线下租房不便、途径少、信息更新慢,导致房屋租赁效率低。为了有效的提升租赁效率和房源信息管理、提供更优质的租赁服务。让房东出租宣传展示与房源管理、租客更好的检索房源信息、发布租房需求以及入住预定、后台房源管理、审核等一站式租赁服务平台。

  • 租客:浏览房源、收藏房源、预定房源、发布租房需求、查看电子合同。
  • 房东:发布房源、订单管理、查看电子合同。
  • 管家:查看房源信息、回复咨询、线下带看房源。
  • 管理员:用户管理、房源管理、订单管理、租房需求、实名认证、系统公告管理。

TODO

  • 房源全文检索
  • 租房需求支持评论
  • 日租、合租模式
  • 房源推荐系统(Go开发)

项目特色

  • 采用了七牛云OSS、CDN服务加速一些图片资源。
  • 采用 FastAPI 的后台任务实现异步发送短信验证码。
  • 采用 tortoise-orm 完成数据库操作的封装。
  • 通过模板字符串动态渲染富文本实现电子合同功能。
  • 对接阿里支付实现了订单、支付模块,对接百度地图实现当前城市定位、房源附近信息查询等功能。
  • 前端界面采用 Vue.js + Element ui 实现数据渲染,Bootstrap 实现自适应布局。

项目体验

项目体验地址 http://43.138.220.206:9999/huihome 由于注册需要发送短信验证码,而手机验证码服务现在只能给我的测试手机号发送验证码,因此不能使用注册服务。大家可以使用已有账号去登录体验。

账号类别 用户名 密码 备注
用户账号 hui 123456 租客账号
用户账号 wang 123456 房东账号

项目源码:HuiDBK/HuiHome: 基于FastAPI的房屋租赁系统 (github.com)

项目还没有太完善,服务器也只是学习级别的,可能会出现很多异常,望大家多担待。

项目启动

  1. 准备好MySQL 与 Redis数据库服务,修改相关数据库配置信息
  2. 申请第三方服务:七牛云的OSS服务、容联云的短信服务、阿里的支付服务、百度地图服务
  3. 依赖于 Python 3.7.9 编程环境
  4. 安装 requirements.txt 项目依赖 pip install -r requirements.txt
  5. 启动项目 python run.py
  6. 如果成功在本地启动项目,访问 http://127.0.0.1:8080/docs 地址查看接口文档

 

项目部署

  1. 确保Mysql、Redis服务正常
  2. 在存在Dockerfile文件的项目目录下构建镜像 docker build -t house_rental_image . (最后.不要忘记)
  3. 运行镜像产生容器 docker run -d --name house_rental_container -p 80:80 house_rental_image
  4. docker ps 查看容器是否启动

系统整体功能图

 

项目结构

项目开发整体采用的是Python的FastAPI框架来搭建系统的接口服务,接口设计遵循 Restful API接口规范。接口前后端交互都采用json格式进行数据交互,项目整体的结构如下:

 

项目Redis缓存设计

Redis key 规范:

project : module : business : unique key
 项目名 :  模块名 :  业务    : 唯一区别key 

例如:用户手机短信验证码缓存
house_rental:user:sms_code:13022331752
复制代码

用户模块缓存

房源模块缓存

 其他缓存

 系统整体ER图

 房屋属性太多故在整体ER图省略

实际表属性更多进行了垂直分表。

代码细节

实名认证装饰器

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值