# sanic-init **Repository Path**: chenbool/sanic-init ## Basic Information - **Project Name**: sanic-init - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-07-09 - **Last Updated**: 2026-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sanic 初始化项目 ## 项目简介 | 项目属性 | 说明 | |---------|------| | **项目名称** | Sanic 初始化项目 | | **Web 框架** | Sanic (Python 异步 Web 框架) | | **版本** | Sanic 21.3.4 | | **数据库** | MySQL (支持异步 aiomysql) | | **ORM** | Tortoise-ORM | | **模板引擎** | Sanic-Jinja2 | | **跨域处理** | Sanic-CORS | | **认证** | JWT (PyJWT) | | **环境配置** | python-dotenv | --- ## 技术栈 | 类别 | 依赖包 | 版本 | |------|--------|------| | **Web 框架** | sanic | 21.3.4 | | **跨域中间件** | Sanic-Cors | 1.0.0 | | **模板引擎** | sanic-jinja2 | 0.10.0 | | **ORM** | tortoise-orm | 0.17.5 | | **MySQL 驱动** | aiomysql | 0.0.21 | | **MySQL 驱动** | PyMySQL | 0.9.3 | | **认证** | PyJWT | 2.0.0 | | **环境变量** | python-dotenv | 0.17.1 | | **工具** | pipreqs | 0.4.10 | --- ## 项目架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ Sanic Web Server │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │ │ │ CORS │ │ Tortoise │ │ Blueprint Router │ │ │ │ 跨域处理 │ │ ORM │ │ 模块化路由 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────────┘ │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │ │ │ Jinja2 │ │ JWT Auth │ │ Middleware │ │ │ │ 模板引擎 │ │ 身份认证 │ │ 中间件 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ┌─────────────────────┼─────────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ MySQL │ │ Redis │ │ Static │ │ 数据库 │ │ 缓存 │ │ 静态资源 │ └───────────────┘ └───────────────┘ └───────────────┘ ``` --- ## 项目结构 ``` sanic-init/ │ ├── app.py # 项目入口文件 │ ├── .env # 环境配置文件 │ ├── .gitignore # Git 忽略配置 │ ├── requirements.txt # Python 依赖清单 │ ├── task.py # 任务脚本文件 │ ├── filename.txt # 文件名清单 │ ├── README.en.md # 英文说明文档 │ └── application/ # 应用核心目录 │ ├── __init__.py # 应用初始化模块 │ # - create_app(): 创建应用实例 │ # - register_blueprints(): 注册蓝图 │ # - register_server(): 注册服务 │ ├── http.py # HTTP 请求/响应处理 │ # - request(): 请求预处理 │ # - response(): 响应后处理 │ ├── listener.py # 服务器生命周期监听器 │ # - before_server_start() │ # - after_server_start() │ # - before_server_stop() │ # - after_server_stop() │ ├── config/ # 配置目录 │ ├── __init__.py │ └── config.py # 应用配置文件 │ # - version: 版本号 │ # - multi_module: 多模块开关 │ # - module: 模块路由配置 │ # - static: 静态资源目录 │ # - listen: 监听器开关 │ ├── controller/ # 控制器目录 (路由) │ │ │ ├── test.py # 测试控制器 (/test) │ ├── user.py # 用户控制器 (/user) │ ├── login.py # 登录控制器 (/login) │ ├── token.py # Token 控制器 (/token) │ │ │ ├── admin/ # 后台管理模块 (/admin) │ │ └── test.py # 后台测试控制器 │ │ │ └── api/ # API 接口模块 (/api) │ └── test.py # API 测试控制器 │ ├── model/ # 数据模型目录 │ ├── __init__.py # 模型导出 │ └── user.py # 用户模型 │ ├── templates/ # 模板文件目录 │ ├── test.html # 测试模板 │ └── admin.html # 后台模板 │ └── util/ # 工具函数目录 └── help.py # 工具帮助模块 # - app: 应用实例 # - config: 配置对象 # - view: 模板引擎 ``` --- ## 目录结构说明 | 目录/文件 | 类型 | 说明 | |-----------|------|------| | `app.py` | 文件 | 项目入口,启动 Sanic 服务器 | | `.env` | 文件 | 环境变量配置(数据库、Redis、JWT 等) | | `requirements.txt` | 文件 | Python 依赖包清单 | | `task.py` | 文件 | 任务脚本(可选) | | `application/` | 目录 | 应用核心代码目录 | | `application/__init__.py` | 文件 | 应用初始化,创建 Sanic 实例 | | `application/http.py` | 文件 | HTTP 中间件(请求/响应处理) | | `application/listener.py` | 文件 | 服务器生命周期监听器 | | `application/config/` | 目录 | 配置文件目录 | | `application/config/config.py` | 文件 | 应用全局配置 | | `application/controller/` | 目录 | 控制器/路由目录 | | `application/controller/*.py` | 文件 | 各功能控制器 | | `application/controller/admin/` | 目录 | 后台管理模块 | | `application/controller/api/` | 目录 | API 接口模块 | | `application/model/` | 目录 | 数据模型目录 | | `application/model/user.py` | 文件 | 用户数据模型 | | `application/templates/` | 目录 | HTML 模板目录 | | `application/util/` | 目录 | 工具函数目录 | --- ## 路由架构 | 模块 | 前缀 | 控制器文件 | |------|------|-----------| | 主控制器 | `/` | `test.py`, `user.py`, `login.py`, `token.py` | | 后台管理 | `/admin` | `admin/test.py` | | API 接口 | `/api` | `api/test.py` | ### 路由详情 | 路由路径 | 方法 | 控制器 | 说明 | |----------|------|--------|------| | `/` | GET | test.py | 测试主页 | | `/user/` | ALL | user.py | 用户接口 | | `/user/quit` | GET | user.py | 退出接口 | | `/login/` | ALL | login.py | 登录接口 | | `/login/quit` | GET | login.py | 登出接口 | | `/token/` | ALL | token.py | Token 生成 | | `/admin/test/` | GET | admin/test.py | 后台测试 | | `/api/test/` | GET | api/test.py | API 测试 | --- ## 环境配置 (.env) | 参数 | 默认值 | 说明 | |------|--------|------| | `DB_URL` | mysql://root:admin123@localhost:3366/test?charset=utf8mb4 | 数据库连接串 | | `REDIS_HOST` | 127.0.0.1 | Redis 主机地址 | | `REDIS_PORT` | 6379 | Redis 端口 | | `DEBUG` | True | 调试模式 | | `PORT` | 8080 | 服务端口 | | `JWT_SECRET` | 123 | JWT 密钥 | --- ## 安装步骤 | 步骤 | 命令 | 说明 | |------|------|------| | 1 | `pip3 install pipreqs` | 安装依赖扫描工具 | | 2 | `pipreqs . --encoding=utf8 --force` | 生成 requirements.txt | | 3 | `pip3 install -r requirements.txt` | 安装项目所需依赖 | --- ## 启动项目 ```bash python app.py ``` 服务默认运行在 `http://localhost:8080` --- ## 数据库配置 | 参数 | 说明 | |------|------| | `db` | 数据库名 | | `host` | IP 地址,连接远程数据库服务器时需要修改 | | `port` | 数据库的端口号 | | `user` | 数据库的用户名 | | `password` | 数据库的密码 | ### 连接代码示例 ```python db = MySQLDatabase('db', host='127.0.0.1', port='3306', user='root', password='123456') ``` --- ## 常见问题 | 问题 | 解决方案 | |------|----------| | `pipreqs` 编码报错 | 使用 `--encoding=utf8 --force` 参数 | | `peewee.ImproperlyConfigured: MySQL driver not installed!` | 执行 `pip install pymysql` | --- ## 主要功能 - ✅ 异步 HTTP 请求处理 - ✅ MySQL 数据库支持 (Tortoise-ORM) - ✅ JWT 身份认证 - ✅ 跨域资源共享 (CORS) - ✅ Jinja2 模板引擎 - ✅ 蓝图 (Blueprint) 模块化路由 - ✅ 多模块支持配置