Files
2026-09-13 00:25:17 +08:00

159 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 为什么选择我们
## 低代码生成,开发效率倍增
项目最大的特点是代码生成器。只需在数据库中建好表,一条命令即可生成完整的前后端 CRUD 模块:
```bash
python generator.py django_example
```
生成器会自动完成:
- **后端代码**:Model、Form、Service、View、URL 全套文件
- **前端页面**:列表页、编辑弹窗、详情弹窗
- **API 接口**:前端 TypeScript API 模块
- **数据库迁移**:自动执行 `makemigrations` 和 `migrate`
- **菜单权限**:自动插入菜单记录和权限节点
- **路由注册**:自动将新模块接入主路由
一个标准 CRUD 模块从手写到调试通常需要 1-2 天,使用生成器只需几分钟。
## 完整的 RBAC 权限体系
系统内置了企业级的基于角色的访问控制:
- **用户管理**:用户增删改查、重置密码、角色分配
- **角色管理**:角色增删改查、菜单权限分配
- **菜单管理**:菜单树形结构、权限节点定义
- **部门管理**:组织架构树形管理
- **权限粒度**:精确到每个操作(`sys:user:add`、`sys:user:delete` 等)
- **超级管理员**:用户 ID=1 自动拥有所有权限,无需额外配置
前端通过 `v-perm` 指令自动控制按钮的显示和隐藏,与后端权限保持一致。
## 标准 Django 架构
项目遵循 Django 最佳实践,代码结构清晰。以 `application/example/` 模块为例:
```python
# models.py - 数据模型,继承 BaseModel 自动获得公共字段
class Example(BaseModel):
name = models.CharField(max_length=100, db_index=True)
status = models.IntegerField(choices=STATUS_CHOICES)
sort = models.IntegerField()
# forms.py - 表单验证,继承 ModelForm
class ExampleForm(forms.ModelForm):
name = forms.CharField(
required=True, max_length=100,
error_messages={'required': '案例名称不能为空'}
)
# services.py - 业务逻辑,所有 CRUD 操作在这里实现
def get_example_page(request):
query = Example.objects.filter(is_delete=False)
paginator = Paginator(query, page_size)
return R.ok(data=page_data)
def add_example(request):
data, error = parse_request_body(request)
form = forms.ExampleForm(data)
if not form.is_valid():
return R.failed(msg=regular.get_err(form))
Example.objects.create(
name=cleaned_data.get('name'),
create_user=get_username(request)
)
return R.ok(msg="创建成功")
# views.py - 视图处理,认证 + 权限 + 操作日志
@method_decorator(check_login, name="get")
class ExamplePageView(PermissionRequired, View):
permission_required = ("sys:example:page",)
@operation_log(title="案例管理-查询分页列表", log_type=LogType.QUERY)
def get(self, request):
return services.get_example_page(request)
```
所有模块遵循相同的分层模式,新成员上手快,代码可维护性强。
## 丰富的内置模块
系统预置了 20+ 个常用业务模块,开箱即用:
- **系统管理**:用户、角色、菜单、部门、职级、岗位
- **系统配置**:字典管理、系统配置、参数管理
- **内容管理**:文章管理、分类管理、公告管理、友情链接
- **系统监控**:登录日志、操作日志、定时任务
- **开发工具**:代码生成器、文件上传、示例模块
这些模块不仅可以直接使用,也是学习本框架开发模式的最佳参考。
## Vue3 + ElementPlus 前端
前端采用主流技术栈,开发体验优秀:
- **Vue3 Composition API**:更灵活的组件逻辑组织
- **TypeScript**:类型安全,减少运行时错误
- **ElementPlus**:成熟的企业级 UI 组件库
- **Pinia**:轻量级状态管理,替代 Vuex
- **Vite**:极速的开发服务器和构建工具
- **动态路由**:菜单和路由由后端驱动,前端无需硬编码
前端开发常用命令:
```bash
cd ui
pnpm install # 安装依赖
pnpm dev # 启动开发服务器 (http://localhost:8001)
pnpm build # 生产环境构建
pnpm type:check # TypeScript 类型检查
```
## 开箱即用的开发体验
从克隆代码到运行项目,只需几步:
```bash
# 1. 克隆项目
git clone <repo_url>
# 2. 创建虚拟环境并安装依赖
python -m venv venv
pip install -r requirements.txt
# 3. 配置 .env(数据库、Redis)
# 4. 初始化数据库
python manage.py makemigrations && python manage.py migrate
# 5. 启动后端
python manage.py runserver
# 6. 启动前端
cd ui && pnpm install && pnpm dev
```
访问 `http://localhost:8001` 即可使用。默认超级管理员账号可直接登录。
## 持续更新
项目持续迭代,紧跟技术发展:
- Django 版本持续升级至 6.0.3
- 前端从 Vue 2 升级到 Vue3 + ElementPlus
- 代码生成器功能不断增强
- 安全机制持续完善
## 适用场景
项目适合以下场景:
- 企业内部管理系统(ERP、CRM、OA 等)
- 内容管理系统(CMS)
- 数据管理后台
- 快速原型开发
- 学习 Django + Vue 全栈开发