Skip to main content

DjangoBaseAi

Django 通用底座,主推 AI:在 Django + DRF 之上提供 AI 对话、PPT 生成、文本润色/翻译 等 Python API,并配套企业级底座(认证、RBAC、组织架构、操作/登录日志、文件与消息等)。安装后挂载路由即可使用权限与基础能力;大模型能力通过 django_base_ai.utils.ai 调用(当前包未暴露 ai_chat_session HTTP 路由)。


快速开始(首次使用)

pip install django-base-ai
django-admin startproject myproject && cd myproject

settings.pyfrom django_base_ai.settings import *,再按 help/QUICKSTART.md 配置数据库、缓存、INSTALLED_APPS、中间件与路由。然后:

python manage.py migrate
python manage.py init                 # 菜单 / 角色 / 字典等 fixtures
python manage.py init_dispatch_cache  # 配置与字典写入缓存(勿依赖应用启动钩自动初始化)
python manage.py runserver

需要字段加密(EncrypyField)时,由宿主应用配置私钥(不要写进仓库或 wheel):

export RSA_PRIVATE_KEY_PATH=/path/to/private.pem
# 或
export RSA_PRIVATE_KEY_PEM="-----BEGIN RSA PRIVATE KEY-----..."

配置 AI Key 后即可在业务代码中使用 ChatSession 等 Python API。


痛点与解决方案

痛点 解决方案
想快速接入大模型,又不想从零搭权限 Python AI 客户端开箱即用;底座提供认证、RBAC、日志
企业 RBAC / 组织架构复杂 用户、角色、部门、菜单、按钮、接口白名单、数据权限过滤
重复实现登录、字典、文件、日志 JWT、字典/系统配置、分片上传、操作/登录日志、消息中心
密钥与敏感数据进包 私钥与 init_users.json 不进制品;环境变量注入机密

技术信息

  • Python:3.9+
  • Django:5.2.x(见 pyproject.toml

功能概览

主推:AI 能力(Python API)

模块 说明
AI 对话 utils.ai.ChatSession:多轮对话、多供应商(DeepSeek、腾讯混元、OpenAI、自定义)
PPT 生成 utils.html_to_pptx、万相配图等工具函数
文本 / 文生图 业务侧封装 HTTP;底层用 utils.ai / wanxiang
AI 工作台 HTTP:ai_desk_app_manage/

说明:历史文档中的 ai_chat_session/* HTTP 接口当前未注册。需要 HTTP 时请业务项目自行封装 ViewSet,或直接调用 Python API。以 AGENT.md 为准。

底座核心

模块 说明
认证 JWT(短 Access + Refresh rotation/blacklist)、单点/第三方登录、验证码、登出
RBAC 用户(写入字段白名单)、角色、部门、菜单、按钮、接口白名单、数据权限
系统配置 字典、系统配置、dispatch 缓存(由管理命令初始化)
审计与日志 操作日志(敏感字段脱敏)、登录日志;Redis 日志用 sync_operation_log 消费
文件与存储 登录上传、MIME/魔数校验、路径沙箱、对象级下载权限、分片秒传
消息与协作 消息中心、WebSocket(token 不在 URL)、常用联系人、协作人
任务与配置 基础任务、应用/标签、DataV 统计 action
工具 统一 JSON 响应、分页、异常处理、XSS 清洗、RSA/AES、节假日等

其他扩展

模块 说明
IM 会话、单聊、群聊、问题分组、问答、聊天记录
数据分析 base_analyze/(管理员权限)

安全与部署要点(整改后)

要求
RSA 私钥 每个安装环境自行设置 RSA_PRIVATE_KEY_PATH / RSA_PRIVATE_KEY_PEM;历史泄露钥须轮换
发布包 不得含私钥、.envinit_users.json;构建后解包抽检
WebSocket ws/base/<nid>/ + Header 或首帧 auth;禁止 /ws/base/<token>/...
生产配置 ENV=pro 须设 ALLOWED_HOSTS、DB/Redis 等;HSTS preload 默认开启
初始化 init + init_dispatch_cacheAppConfig.ready() 不再自动打 DB/Redis

更多细节见 AGENT.md §0.1 / §8


统一响应格式

除流式接口与 WebSocket 外,接口均采用:

分页列表

{
  "code": 2000,
  "msg": "success",
  "data": {
    "page": 1,
    "limit": 10,
    "total": 100,
    "is_next": true,
    "is_previous": false,
    "data": []
  }
}

单条 / 非分页

{ "code": 2000, "msg": "success", "data": {} }

错误ErrorResponse 默认 HTTP 400;未处理异常 HTTP 500,不回传堆栈):

{ "code": 400, "msg": "错误说明", "data": null }

权限拒绝为 HTTP 403。


暴露的 HTTP API(摘要)

路径前缀默认 /base/api/system/。完整 action 表见 AGENT.md

认证与初始化

方法 路径 说明
POST login/ 登录
POST sign_login/ / custome_login/ SSO / 自定义登录
POST token/refresh/ 刷新 JWT
POST logout/ 登出
GET captcha/ 验证码
GET init/dictionary/ / init/settings/ 前端初始化(不执行系统命令)
GET holiday/ 节假日
GET ws WebSocket 测试页 HTML(不是通道)

资源型 CRUD

多数资源支持标准 list/create/retrieve/update/destroy。例外:

  • datav/:仅统计类 action(如 users_total/),无 list
  • base_analyze/:仅分析 action,默认管理员
  • ai_chat_session/未注册

常见资源:menu/role/dept/user/file/dictionary/system_config/message_center/task/apps/login_log/operation_log/、IM 系列、ai_desk_app_manage/ 等。

文件(安全)

方法 路径 说明
POST file/upload_allow_file/ 登录上传;魔数/扩展名校验
GET file/download_file/?fid= 登录 + 对象级权限 + 路径沙箱
POST file/check_file_by_md5/upload_chunk/merge_chunks/ 分片秒传

WebSocket(ASGI)

ws/base/<nid>/

认证:Authorization: Bearer <token>,或连接后首帧 {"type":"auth","token":"..."}


安装

pip install django-base-ai

Windows / Linuxuwsgisupervisor 仅非 Windows 安装;本地可用 runserver / daphne

源码开发:

pip install -r requirements.txt
# 或
pip install -e ".[dev]"

Linux 生产可 pip install django-base-ai[deploy]


在项目中使用(一键集成)

  1. 安装包到目标环境。
  2. 配置 settings.py
    • INSTALLED_APPS 加入 django_base_ai.system
    • EXCEPTION_HANDLER = "django_base_ai.utils.exception.custom_exception_handler"
    • 按需配置 JWT、CORS、AI Key、RSA 私钥环境变量
  3. 路由
    path("base/api/system/", include("django_base_ai.system.urls"))
    
  4. ASGI(消息推送):挂载 django_base_ai.websocket.routing.websocket_urlpatterns
  5. 初始化migrateinitinit_dispatch_cache
  6. 运维(可选):定时 sync_operation_log

项目结构(简要)

DjangoBaseAi/
├── django_base_ai/          # 可安装主包
│   ├── dispatch.py
│   ├── settings.py
│   ├── system/              # 模型、视图、fixtures、management
│   ├── utils/               # 认证、权限、AI、RSA、XSS…
│   ├── websocket/           # ws/base/<nid>/
│   └── AGENT.md
├── docs/                    # RSA 轮换等运维说明
├── help/                    # QUICKSTART、ARCHITECTURE
├── conf/                    # quickstart / env / test / pro
├── tests/                   # 含 tests/security 回归
├── pyproject.toml
└── README.md

开发约定

  • PEP 8ruff format .ruff check . 通过后再提交。
  • 测试ENV=quickstart pytest(安全专项:pytest tests/security)。
  • 构建:清理 build/ 后打包;解包确认无 init_users.json / 私钥。
ruff format .
ruff check .
ENV=quickstart pytest -q
python -m build   # 或项目 build.sh;构建前 rm -rf build dist

许可证

见仓库根目录 LICENSE

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_base_ai-1.0.65.tar.gz (324.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_base_ai-1.0.65-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

Details for the file django_base_ai-1.0.65.tar.gz.

File metadata

  • Download URL: django_base_ai-1.0.65.tar.gz
  • Upload date:
  • Size: 324.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for django_base_ai-1.0.65.tar.gz
Algorithm Hash digest
SHA256 b43e765ba09cb9ae188101929562484b09aa752d0ac80ffebd3a23a48f14e228
MD5 aa81dfe043c16e2a2e2d86d9633dcc07
BLAKE2b-256 edcaab1aca3dfe9411d004f9897f9469ec31037cc517f216069656f544054253

See more details on using hashes here.

File details

Details for the file django_base_ai-1.0.65-py3-none-any.whl.

File metadata

File hashes

Hashes for django_base_ai-1.0.65-py3-none-any.whl
Algorithm Hash digest
SHA256 70790af1584fee1dc3fa4b3e9b89bf6c1b67529b7330c87969ae199e663b077d
MD5 f88b05f0856256f926ab985918a6268d
BLAKE2b-256 22886fbb190bd2efa5cbf27b9e6a8ce7ff0a4b65eae1ad39c43af4a7631ac0e7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page