Skip to content

Repository files navigation

Django With Speckit

一个基于 Django 的学生学籍管理系统 demo,当前代码已经实现主页面学生列表、AI 助手单轮对话确认操作、Django Admin 后台、演示数据初始化和自动化测试。

当前功能包括:

  • 主页面展示学生列表
  • 学生字段包含:姓名、年龄、宿舍编号、性别、电话、邮箱
  • AI 助手支持自然语言增删改查
  • AI 助手页面展示当前会话聊天记录
  • AI 操作必须先确认,再执行
  • 每轮对话只允许处理一条 ORM 操作,执行或取消后必须先开启新对话
  • 后台管理使用 Django Admin
  • 数据访问统一通过 Django ORM
  • 浏览器写操作启用 CSRF 防护

技术栈

  • Python 3.12+(当前本机实现环境为 Python 3.13)
  • Django 4.2.7
  • Django Ninja 1.0.1
  • PydanticAI 1.0.3
  • Ollama
  • Bootstrap 5
  • SQLite

Ollama 要求

需要本机已安装并可用的模型:

ollama list

应能看到:

gpt-oss:120b

当前项目默认通过 OpenAI 兼容接口访问 Ollama,默认模型为 gpt-oss:120b,推荐配置为:

OLLAMA_BASE_URL=http://127.0.0.1:11434/v1

安装依赖

如果你本机还没装这些依赖,可以执行:

python3 -m pip install -r requirements.txt

初始化项目

先执行数据库迁移:

python3 manage.py migrate

创建默认管理员:

python3 manage.py init_admin

初始化演示学生数据:

python3 manage.py seed_students

启动项目

启动 Django 开发服务器:

python3 manage.py runserver

启动后访问:

默认管理员账号:

用户名:admin
密码:123456

常用命令

数据库迁移:

python3 manage.py makemigrations
python3 manage.py migrate

系统检查:

python3 manage.py check

运行测试:

python3 manage.py test

运行真实 Ollama gpt-oss:120b 集成测试:

python3 manage.py test tests.ollama_integration

重新初始化管理员:

python3 manage.py init_admin

重新初始化演示数据:

python3 manage.py seed_students

当前路由与 RESTful API

页面与后台入口:

  • GET /:学生列表主页面
  • GET /admin/:Django Admin 后台入口

当前 AI 助手相关接口:

POST /api/agent/commands

用途:

  • 提交自然语言指令
  • 解析成待确认操作
  • 返回当前会话消息流
  • 不直接执行数据库变更

请求示例:

{
  "prompt": "添加学生李明,年龄24,宿舍B143,性别男,电话13800000000,邮箱liming@example.com"
}

POST /api/agent/confirm

用途:

  • 对待确认操作执行确认或取消
  • 只有确认后才真正执行 ORM 操作
  • 返回更新后的会话消息流

请求示例:

{
  "action_id": "uuid",
  "decision": "confirm"
}

POST /api/agent/reset

用途:

  • 开启新对话
  • 清空当前会话聊天记录
  • 解除“本轮已结束”的输入锁定
  • 如当前仍有待确认操作,会先标记为取消

请求示例:

{}

目录说明

manage.py
config/                 Django 项目配置
students/               学生学籍管理应用
templates/              顶层模板
static/                 静态资源
tests/                  测试文件
specs/001-student-record-ai/   Speckit 产物

安全说明

  • 所有学生数据访问都通过 Django ORM,避免业务层拼接 SQL
  • AI 写操作必须先确认,再执行
  • AI 接口使用会话绑定,防止跨会话误确认
  • AI 执行完成后必须先重置会话,避免旧上下文干扰下一轮
  • 浏览器写请求需要 CSRF Token
  • Django Admin 与主页面使用同一数据源

当前验证结果

已执行并通过:

python3 manage.py check
python3 manage.py test

当前测试总数:

49 tests, all passed

真实模型集成测试:

tests.ollama_integration

说明:

  • 默认 python3 manage.py test 只跑快速单测和业务测试,不直接依赖大模型响应。
  • python3 manage.py test tests.ollama_integration 会真实调用本机 Ollama 中的 gpt-oss:120b。

Releases

Packages

Contributors

Languages