Become a sponsor

公告/链接
公告和链接是两个简单 CRUD 内容模块,提供标准的增删改查接口。适用于系统公告、友情链接等场景。
# application/notice/models.py
from application.models import BaseModel
class Notice(BaseModel):
"""通知公告模型类"""
class Meta:
db_table = 'django_notice'
title = models.CharField(max_length=255, verbose_name='通知标题')
cover = models.CharField(max_length=255, null=True, blank=True, verbose_name='通知封面')
type = models.IntegerField(default=1, verbose_name='通知类型:1-通知 2-公告')
click_num = models.IntegerField(default=0, verbose_name='点击率')
status = models.IntegerField(default=1, verbose_name='通知状态:1-正常 2-停用')
content = models.TextField(null=True, blank=True, verbose_name='通知公告内容')| 字段 | 类型 | 说明 |
|---|---|---|
title | str | 通知标题 |
cover | str | 封面图片路径 |
type | int | 类型:1-通知 2-公告 |
click_num | int | 点击次数(自动统计) |
status | int | 状态:1-正常 2-停用 |
content | str | 富文本内容(HTML) |
| 接口 | 方法 | 权限节点 | 说明 |
|---|---|---|---|
/notice/page | GET | sys:notice:page | 公告分页列表 |
/notice/detail/<int:id> | GET | sys:notice:detail | 公告详情 |
/notice/add | POST | sys:notice:add | 新增公告 |
/notice/update | PUT | sys:notice:update | 编辑公告 |
/notice/delete/<int:id> | DELETE | sys:notice:delete | 删除公告 |
| 参数 | 类型 | 说明 |
|---|---|---|
pageNo | int | 页码 |
pageSize | int | 每页条数 |
title | str | 标题(模糊查询) |
type | int | 类型:1-通知 2-公告 |
status | int | 状态:1-正常 2-停用 |
公告内容使用富文本编辑器,支持 HTML 格式:
# 添加公告时,content 字段接收 HTML 内容
Notice.objects.create(
title="系统升级通知",
type=1,
status=1,
content="<p>系统将于<strong>2026-09-10</strong>进行升级维护...</p>",
create_user=get_username(request)
)XSS 防护
富文本内容存储前需进行 XSS 过滤,防止恶意脚本注入。项目内置了 utils/common.py 中的 clean_html() 函数用于过滤危险标签。
# application/link/models.py
from application.models import BaseModel
class Link(BaseModel):
"""友情链接模型类"""
class Meta:
db_table = 'django_link'
name = models.CharField(max_length=255, verbose_name='链接名称')
image = models.CharField(max_length=255, null=True, blank=True, verbose_name='链接图片')
url = models.CharField(max_length=255, null=True, blank=True, verbose_name='链接地址')
status = models.IntegerField(default=1, verbose_name='链接状态:1-正常 2-停用')
sort = models.IntegerField(default=0, verbose_name='排序')
note = models.CharField(max_length=255, null=True, blank=True, verbose_name='备注')| 字段 | 类型 | 说明 |
|---|---|---|
name | str | 链接名称 |
image | str | 链接 Logo 图片路径 |
url | str | 链接地址 |
status | int | 状态:1-正常 2-停用 |
sort | int | 排序权重(数字越小越靠前) |
note | str | 备注信息 |
| 接口 | 方法 | 权限节点 | 说明 |
|---|---|---|---|
/link/page | GET | sys:link:page | 链接分页列表 |
/link/detail/<int:id> | GET | sys:link:detail | 链接详情 |
/link/add | POST | sys:link:add | 新增链接 |
/link/update | PUT | sys:link:update | 编辑链接 |
/link/delete/<int:id> | DELETE | sys:link:delete | 删除链接 |
/link/status | PUT | sys:link:status | 设置状态 |
| 参数 | 类型 | 说明 |
|---|---|---|
pageNo | int | 页码 |
pageSize | int | 每页条数 |
name | str | 链接名称(模糊查询) |
status | int | 状态:1-正常 2-停用 |
{
"code": 0,
"data": {
"records": [
{
"id": 1,
"name": "Django 官方网站",
"image": "/uploads/link/django.png",
"url": "https://www.djangoproject.com",
"status": 1,
"statusText": "正常",
"sort": 1,
"note": "Python Web 框架",
"createUser": "admin",
"createTime": "2026-09-08 10:00:00"
}
],
"total": 10,
"size": 10,
"current": 1,
"pages": 1
},
"msg": "操作成功",
"ok": true
}两个模块均遵循相同的开发模式:
1. models.py:继承 BaseModel,定义业务字段
2. forms.py:继承 Django Form,定义字段约束和验证规则
3. services.py:实现 CRUD 业务逻辑函数
4. views.py:PermissionRequired + check_login 装饰器
5. urls.py:路由配置,映射 URL 到视图类application/notice/ application/link/
├── models.py ├── models.py
├── forms.py ├── forms.py
├── services.py ├── services.py
├── views.py ├── views.py
├── urls.py ├── urls.py
├── apps.py ├── apps.py
└── admin.py └── admin.py公告编辑使用富文本编辑器,支持图片上传:
<template>
<BasicModal @register="registerModal" @ok="handleSubmit">
<BasicForm @register="registerForm" />
<!-- 富文本编辑器 -->
<div class="editor-container">
<Toolbar :editor="editorRef" />
<Editor v-model="content" :defaultConfig="editorConfig" />
</div>
</BasicModal>
</template>链接列表页使用 BasicTable 组件,支持状态切换和排序:
<template>
<PageWrapper>
<BasicForm @register="registerSearch" />
<BasicTable @register="registerTable">
<template #tableTitle>
<el-button type="primary" @click="handleAdd">新增链接</el-button>
</template>
</BasicTable>
</PageWrapper>
</template>内容管理模块具备以下特点:
1. 简单 CRUD:标准增删改查接口,遵循五层架构
2. 公告管理:支持富文本内容、封面图片、类型区分(通知/公告)
3. 链接管理:友情链接,支持 Logo 图片、排序权重、状态管理
4. 统一模式:models/forms/services/views/urls 五层结构
5. XSS 防护:富文本内容自动过滤危险标签
6. 状态管理:支持启用/停用状态切换