自学全栈搭建python [fastapi] + uniapp [vue3+ts]项目

小白终成大白

工作笔记


文章目录


前言

前端干了五年发现现在大家都在搞ai全栈了

刚好新公司给我机会成长 让我独立做一个小程序项目 前后端都自己做

然后记录一下自己的工作过程

如果你是也是刚接触python的小白可以直接抄了 问ai也是要自己摸索 参考这片文档 可以节省摸索 调教ai的时间 希望可以帮助到你

0 前期准备

请先下载好相关环境

需要用到node(建议18及以上)、git、python(需要 3.8 及以上)、hbuilder等

一、建立项目

因为是现在都是全栈了,所以搭建项目就不前后端分开建了 弄一个单仓库多模块目录结构

最终结构大概这样子 起一个你项目的名称 作为根目录

红框的是 前端项目和后端代码分别存放的位置 需要手动建立这个文件夹 或者生成前后端项目时直接起这个名字生成到此处

1.git初始化

bash 复制代码
# 进入项目根目录 我一般是在项目根目录右键直接选择在终端中打开 免得还要cd过去
cd community_rental_governance
# 初始化Git 输入此命令会生成.git文件在项目根目录中
git init
# 创建.gitignore文件(核心!避免提交node_modules、venv等)
touch .gitignore

此时打开项目根目录会看到空的.gitignore文件

可将以下代码直接复制保存到.gitignore

bash 复制代码
# 前端忽略
frontend/node_modules/
frontend/dist/
frontend/.env*
frontend/.uniapp/
frontend/package-lock.json

# Python忽略
backend/__pycache__/
backend/venv/
backend/.env
backend/*.pyc
backend/.pytest_cache/

# Docker忽略
.dockerignore
*.log

# 通用忽略
.DS_Store
.idea/
vscode/

2.建立前端项目

如果你不需要uniapp可以直接参考vue脚手架搭建教程

反正最终只要把前端代码保存在frontend文件中即可

我这里是使用hbuilder新建一个uniapp项目 保存位置选择项目根目录 文件名可以直接起frontend创建完成时目录结构应如下图

3.建立python的后端项目

先打开Windows 终端(推荐用 PowerShell,也可以用 CMD),执行以下命令检查 Python 版本(需要 3.8 及以上)

bash 复制代码
python --version

如果Python 符合要求

请打开终端,cd切换到项目的 backend 文件夹(或者和我一样建立好backend文件夹 然后右键在终端打开 输入一下代码)

bash 复制代码
# 1. 创建名为venv的虚拟环境 回车之后(没什么反应是正常的,再接着输入下一行)
python -m venv venv

# 2. 激活虚拟环境(关键!激活后终端前缀会出现(venv))
venv\Scripts\activate

结果如图

⚠️ 若激活时提示「执行策略禁止运行脚本」,先以管理员身份打开 PowerShell

接着安装 FastAPI 核心依赖

FastAPI 是python的框架

  1. 原生支持异步(高并发)
  2. 自动生成 API 文档(方便 Uniapp 对接)
  3. 轻量但功能全
  4. 原生支持 TypeScript 友好的类型校验
  5. 学习曲线平缓

还是在刚才输入venv什么什么的终端窗口继续

bash 复制代码
# 安装基础依赖
pip install fastapi uvicorn

# 可选:安装常用扩展(后续开发会用到,提前装)
pip install pydantic sqlalchemy python-multipart python-jose[cryptography] passlib[bcrypt]

粘进去之后回车就开始下载了

还可以做的一部操作是导出依赖到 requirements.txt

把已安装的包记录下来,方便后续部署 / 协作:

bash 复制代码
pip freeze > requirements.txt

Q:pip freeze > requirements.txt 可以重复使用吗?

A:可以

✅ 使用场景:

首次初始化项目:生成基础依赖清单(比如 fastapi、uvicorn);

安装新依赖后(比如pip install sqlalchemy):重新执行该命令,会覆盖原有requirements.txt,把新安装的包同步进去;

协作 / 部署前:确保requirements.txt包含项目所有依赖,其他人 / 服务器执行pip install -r requirements.txt就能一键安装相同版本的依赖。

二、编写 FastAPI 基础代码

在backend文件夹下创建main.py文件(可以直接在 VSCode / 记事本中创建),写入以下核心代码:

1.main.py代码

python 复制代码
# backend/main.py
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

# 初始化FastAPI应用
app = FastAPI(
    title="社区群租房治理系统API",
    description="提供举报、工单、统计等接口",
    version="1.0.0"
)

# 解决跨域(必须!否则前端UniApp调用会报错)
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 开发阶段允许所有来源,生产环境替换为前端实际域名
    allow_credentials=True,
    allow_methods=["*"],  # 允许所有HTTP方法(GET/POST/PUT/DELETE等)
    allow_headers=["*"],  # 允许所有请求头
)

# 测试接口(验证服务是否正常)
@app.get("/api/health")
async def health_check():
    return {
        "status": "success",
        "message": "FastAPI服务启动成功",
        "project": "community_rental_governance"
    }

# 本地运行入口
if __name__ == "__main__":
    import uvicorn
    # host=0.0.0.0 允许局域网访问,port=8000 端口可自定义
    uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)

Q : 为什么要写health_check

A :

✅ 快速验证服务可用性:启动后访问/api/health,1 秒确认「服务是否启动、端口是否占用、基础逻辑是否正常」,比看终端日志更直观;

✅ 前后端联调第一步:前端不用先写复杂业务逻辑,先调health_check接口,快速确认「网络通不通、跨域配没配、接口格式对不对」;

✅ 运维 / 部署必备:Docker/K8s / 服务器监控会定时调用health_check,如果返回异常,会自动告警 / 重启服务(比如服务崩溃时);

✅ 团队协作高效:新人接手项目,先调health_check,不用看复杂文档就能确认环境是否搭建成功。

2.启动后端项目

终端cd到后端目录 如果已经在了就下一步

bash 复制代码
cd D:\project\community_rental_governance\backend

激活虚拟环境(关键!必须先做)

bash 复制代码
# 执行激活命令,成功后终端前缀会出现 (venv)
venv\Scripts\activate
bash 复制代码
# 在运行main.py
python main.py

注意一定要先venv\Scripts\activate激活虚拟环境 在运行main

要不就会出现上图报错 像我一样

3.查看启动后效果

启动成功后,打开浏览器访问以下地址:

接口文档(自动生成):http://127.0.0.1:8000/docs

✅ 能看到 FastAPI 的 Swagger 文档界面,可直接在网页上测试/api/health接口。

健康检查接口:http://127.0.0.1:8000/api/health

✅ 能看到返回的 JSON 数据,说明服务正常。

依赖更新:后续安装新包后,记得重新执行pip freeze > requirements.txt更新依赖文件。
相关推荐
深蓝电商API2 小时前
爬虫数据API化:Flask快速搭建接口
爬虫·python·flask
七夜zippoe2 小时前
Redis高级数据结构实战:从Stream到HyperLogLog的深度解析
数据结构·数据库·redis·python·缓冲
小王努力学编程2 小时前
LangGraph——AI应用开发框架
服务器·人工智能·python·ai·langchain·rag·langgraph
tryCbest2 小时前
Django 基础入门教程(第四篇):Form组件、Auth认证、Cookie/Session与中间件
python·django
王夏奇2 小时前
Python-对excel文件操作的总览
开发语言·python·excel
2501_941982052 小时前
Python 实现企业微信外部群机器人:轻量化消息推送方案
python·机器人·企业微信
骇客野人2 小时前
python爬虫例子,且处理反爬的网站也能爬
开发语言·爬虫·python
hutengyi2 小时前
SpringBoot项目中读取resource目录下的文件(六种方法)
spring boot·python·pycharm
老天文学家了2 小时前
蓝桥杯:直线
python