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)
# 邮件服务器配置
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配置
# 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:
# 验证码演示
http://localhost:8000/demo/captcha/
# 邮件系统演示
http://localhost:8000/demo/email/
# WebSocket演示
http://localhost:8000/demo/websocket/
2. 测试验证码功能
- 打开验证码演示页面
- 选择验证码类型
- 点击验证码图片可刷新
- 输入验证码进行验证
- 观察验证结果反馈
3. 测试邮件功能
- 打开邮件演示页面
- 选择邮件模板类型
- 输入收件人邮箱
- 点击发送测试邮件
- 查看发送状态
4. 测试WebSocket功能
- 打开WebSocket演示页面
- 点击"连接"按钮建立连接
- 在输入框中发送消息
- 观察消息接收和广播
- 测试断开重连功能
🔧 高级用法
自定义邮件模板
在 views.py 中的 generate_email_content 函数中添加新的邮件模板:
def generate_email_content(email_type, recipient_name, custom_subject='', custom_message=''):
email_templates = {
'your_template': {
'subject': '您的邮件主题',
'html_template': '''
<html>
<!-- 您的HTML模板内容 -->
</html>
'''
}
}
# ...
扩展验证码类型
在验证码演示中扩展新的验证码类型:
# 在 captcha_demo 函数中添加新的验证码类型
captcha_types = {
'random_char': '随机字符验证码',
'math': '数学运算验证码',
'word': '单词验证码',
'new_type': '您的新验证码类型' # 新增类型
}
WebSocket消息处理
在 consumers.py 中扩展WebSocket消息处理逻辑:
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)
🧪 测试
运行单元测试
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演示功能
- 提供完整的示例代码和文档
🔗 相关链接
💡 提示: 此模块主要用于功能演示和学习参考,生产环境请根据实际需求进行适当调整和优化。