Files
hertz_django/hertz_demo/README.md
2025-11-11 17:21:59 +08:00

7.2 KiB
Raw Permalink Blame History

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. 测试验证码功能

  1. 打开验证码演示页面
  2. 选择验证码类型
  3. 点击验证码图片可刷新
  4. 输入验证码进行验证
  5. 观察验证结果反馈

3. 测试邮件功能

  1. 打开邮件演示页面
  2. 选择邮件模板类型
  3. 输入收件人邮箱
  4. 点击发送测试邮件
  5. 查看发送状态

4. 测试WebSocket功能

  1. 打开WebSocket演示页面
  2. 点击"连接"按钮建立连接
  3. 在输入框中发送消息
  4. 观察消息接收和广播
  5. 测试断开重连功能

🔧 高级用法

自定义邮件模板

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演示功能
  • 提供完整的示例代码和文档

🔗 相关链接


💡 提示: 此模块主要用于功能演示和学习参考,生产环境请根据实际需求进行适当调整和优化。