前后端第一版提交
This commit is contained in:
274
hertz_demo/README.md
Normal file
274
hertz_demo/README.md
Normal file
@@ -0,0 +1,274 @@
|
||||
# Hertz Demo 演示模块
|
||||
|
||||
## 📋 模块概述
|
||||
|
||||
Hertz Demo 模块是一个功能演示和测试模块,提供了完整的示例代码和交互式演示页面,帮助开发者快速了解和使用 Hertz Server Django 框架的各项功能特性。
|
||||
|
||||
## ✨ 功能特性
|
||||
|
||||
- **验证码演示**: 展示多种验证码类型的生成、刷新和验证功能
|
||||
- **邮件系统演示**: 提供邮件模板预览和发送测试功能
|
||||
- **WebSocket演示**: 实时通信功能演示和测试
|
||||
- **交互式界面**: 美观的Web界面,支持实时操作和反馈
|
||||
- **完整示例代码**: 提供可直接参考的实现代码
|
||||
|
||||
## 📁 模块结构
|
||||
|
||||
```
|
||||
hertz_demo/
|
||||
├── __init__.py # 模块初始化
|
||||
├── apps.py # Django应用配置
|
||||
├── models.py # 数据模型(预留)
|
||||
├── views.py # 视图函数和业务逻辑
|
||||
├── urls.py # URL路由配置
|
||||
├── tests.py # 单元测试
|
||||
├── consumers.py # WebSocket消费者
|
||||
├── routing.py # WebSocket路由
|
||||
└── templates/ # 模板文件
|
||||
├── captcha_demo.html # 验证码演示页面
|
||||
├── email_demo.html # 邮件系统演示页面
|
||||
└── websocket_demo.html # WebSocket演示页面
|
||||
```
|
||||
|
||||
## 🎯 核心功能详解
|
||||
|
||||
### 1. 验证码演示功能
|
||||
|
||||
验证码演示页面提供三种验证码类型:
|
||||
- **随机字符验证码**: 随机生成的字母数字组合
|
||||
- **数学运算验证码**: 简单的数学计算验证
|
||||
- **单词验证码**: 英文单词验证
|
||||
|
||||
**主要功能**:
|
||||
- 验证码实时生成和刷新
|
||||
- 前端Ajax验证
|
||||
- 后端表单验证
|
||||
- 验证码类型切换
|
||||
|
||||
### 2. 邮件系统演示功能
|
||||
|
||||
邮件演示页面提供多种邮件模板:
|
||||
- **欢迎邮件**: 用户注册欢迎邮件模板
|
||||
- **系统通知**: 系统消息通知模板
|
||||
- **邮箱验证**: 邮箱验证邮件模板
|
||||
- **自定义邮件**: 支持自定义主题和内容
|
||||
|
||||
**主要功能**:
|
||||
- 邮件模板实时预览
|
||||
- 邮件发送测试
|
||||
- 收件人邮箱验证
|
||||
- 发送状态反馈
|
||||
|
||||
### 3. WebSocket演示功能
|
||||
|
||||
WebSocket演示页面提供实时通信功能:
|
||||
- **连接状态管理**: 显示WebSocket连接状态
|
||||
- **消息发送接收**: 实时消息通信
|
||||
- **广播功能**: 消息广播演示
|
||||
- **错误处理**: 连接异常处理
|
||||
|
||||
## 🚀 API接口
|
||||
|
||||
### 演示页面路由
|
||||
|
||||
| 路由 | 方法 | 描述 |
|
||||
|------|------|------|
|
||||
| `/demo/captcha/` | GET | 验证码演示页面 |
|
||||
| `/demo/email/` | GET | 邮件系统演示页面 |
|
||||
| `/demo/websocket/` | GET | WebSocket演示页面 |
|
||||
| `/websocket/test/` | GET | WebSocket测试页面 |
|
||||
|
||||
### Ajax接口
|
||||
|
||||
**验证码相关**:
|
||||
- `POST /demo/captcha/` (Ajax): 验证码刷新和验证
|
||||
- 请求体: `{"action": "refresh/verify", "captcha_id": "...", "user_input": "..."}`
|
||||
|
||||
**邮件发送**:
|
||||
- `POST /demo/email/` (Ajax): 发送演示邮件
|
||||
- 请求体: 邮件类型、收件人邮箱、自定义内容等
|
||||
|
||||
## ⚙️ 配置参数
|
||||
|
||||
### 邮件配置(settings.py)
|
||||
```python
|
||||
# 邮件服务器配置
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_HOST = 'smtp.gmail.com'
|
||||
EMAIL_PORT = 587
|
||||
EMAIL_USE_TLS = True
|
||||
EMAIL_HOST_USER = 'your-email@gmail.com'
|
||||
EMAIL_HOST_PASSWORD = 'your-app-password'
|
||||
DEFAULT_FROM_EMAIL = 'noreply@yourdomain.com'
|
||||
```
|
||||
|
||||
### WebSocket配置
|
||||
```python
|
||||
# ASGI配置
|
||||
ASGI_APPLICATION = 'hertz_server_django.asgi.application'
|
||||
|
||||
# Channel layers配置
|
||||
CHANNEL_LAYERS = {
|
||||
'default': {
|
||||
'BACKEND': 'channels_redis.core.RedisChannelLayer',
|
||||
'CONFIG': {
|
||||
'hosts': [('127.0.0.1', 6379)],
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
## 🛠️ 快速开始
|
||||
|
||||
### 1. 访问演示页面
|
||||
|
||||
启动开发服务器后,访问以下URL:
|
||||
|
||||
```bash
|
||||
# 验证码演示
|
||||
http://localhost:8000/demo/captcha/
|
||||
|
||||
# 邮件系统演示
|
||||
http://localhost:8000/demo/email/
|
||||
|
||||
# WebSocket演示
|
||||
http://localhost:8000/demo/websocket/
|
||||
```
|
||||
|
||||
### 2. 测试验证码功能
|
||||
|
||||
1. 打开验证码演示页面
|
||||
2. 选择验证码类型
|
||||
3. 点击验证码图片可刷新
|
||||
4. 输入验证码进行验证
|
||||
5. 观察验证结果反馈
|
||||
|
||||
### 3. 测试邮件功能
|
||||
|
||||
1. 打开邮件演示页面
|
||||
2. 选择邮件模板类型
|
||||
3. 输入收件人邮箱
|
||||
4. 点击发送测试邮件
|
||||
5. 查看发送状态
|
||||
|
||||
### 4. 测试WebSocket功能
|
||||
|
||||
1. 打开WebSocket演示页面
|
||||
2. 点击"连接"按钮建立连接
|
||||
3. 在输入框中发送消息
|
||||
4. 观察消息接收和广播
|
||||
5. 测试断开重连功能
|
||||
|
||||
## 🔧 高级用法
|
||||
|
||||
### 自定义邮件模板
|
||||
|
||||
在 `views.py` 中的 `generate_email_content` 函数中添加新的邮件模板:
|
||||
|
||||
```python
|
||||
def generate_email_content(email_type, recipient_name, custom_subject='', custom_message=''):
|
||||
email_templates = {
|
||||
'your_template': {
|
||||
'subject': '您的邮件主题',
|
||||
'html_template': '''
|
||||
<html>
|
||||
<!-- 您的HTML模板内容 -->
|
||||
</html>
|
||||
'''
|
||||
}
|
||||
}
|
||||
# ...
|
||||
```
|
||||
|
||||
### 扩展验证码类型
|
||||
|
||||
在验证码演示中扩展新的验证码类型:
|
||||
|
||||
```python
|
||||
# 在 captcha_demo 函数中添加新的验证码类型
|
||||
captcha_types = {
|
||||
'random_char': '随机字符验证码',
|
||||
'math': '数学运算验证码',
|
||||
'word': '单词验证码',
|
||||
'new_type': '您的新验证码类型' # 新增类型
|
||||
}
|
||||
```
|
||||
|
||||
### WebSocket消息处理
|
||||
|
||||
在 `consumers.py` 中扩展WebSocket消息处理逻辑:
|
||||
|
||||
```python
|
||||
class DemoConsumer(WebsocketConsumer):
|
||||
async def receive(self, text_data):
|
||||
data = json.loads(text_data)
|
||||
message_type = data.get('type')
|
||||
|
||||
if message_type == 'custom_message':
|
||||
# 处理自定义消息类型
|
||||
await self.handle_custom_message(data)
|
||||
```
|
||||
|
||||
## 🧪 测试
|
||||
|
||||
### 运行单元测试
|
||||
|
||||
```bash
|
||||
python manage.py test hertz_demo
|
||||
```
|
||||
|
||||
### 测试覆盖范围
|
||||
|
||||
- 验证码功能测试
|
||||
- 邮件发送测试
|
||||
- WebSocket连接测试
|
||||
- 页面渲染测试
|
||||
|
||||
## 🔒 安全考虑
|
||||
|
||||
### 验证码安全
|
||||
- 验证码有效期限制
|
||||
- 验证次数限制
|
||||
- 防止暴力破解
|
||||
|
||||
### 邮件安全
|
||||
- 收件人邮箱验证
|
||||
- 发送频率限制
|
||||
- 防止邮件滥用
|
||||
|
||||
### WebSocket安全
|
||||
- 连接认证
|
||||
- 消息内容过滤
|
||||
- 防止DDoS攻击
|
||||
|
||||
## ❓ 常见问题
|
||||
|
||||
### Q: 邮件发送失败怎么办?
|
||||
A: 检查邮件服务器配置,确保SMTP设置正确,邮箱密码为应用专用密码。
|
||||
|
||||
### Q: WebSocket连接失败怎么办?
|
||||
A: 检查Redis服务是否运行,确保CHANNEL_LAYERS配置正确。
|
||||
|
||||
### Q: 验证码验证总是失败?
|
||||
A: 检查验证码存储后端(Redis)是否正常运行。
|
||||
|
||||
### Q: 如何添加新的演示功能?
|
||||
A: 在views.py中添加新的视图函数,在urls.py中配置路由,在templates中添加模板文件。
|
||||
|
||||
## 📝 更新日志
|
||||
|
||||
### v1.0.0 (2024-01-01)
|
||||
- 初始版本发布
|
||||
- 包含验证码、邮件、WebSocket演示功能
|
||||
- 提供完整的示例代码和文档
|
||||
|
||||
## 🔗 相关链接
|
||||
|
||||
- [🏠 返回主项目](../README.md) - Hertz Server Django 主项目文档
|
||||
- [🔐 认证授权模块](../hertz_studio_django_auth/README.md) - 用户管理和权限控制
|
||||
- [🛠️ 工具类模块](../hertz_studio_django_utils/README.md) - 加密、邮件和验证工具
|
||||
- [📋 代码风格指南](../docs/CODING_STYLE.md) - 开发规范和最佳实践
|
||||
|
||||
---
|
||||
|
||||
💡 **提示**: 此模块主要用于功能演示和学习参考,生产环境请根据实际需求进行适当调整和优化。
|
||||
Reference in New Issue
Block a user