From 786ab85a3d936115fe10bb8a86f8fcb7d082c2ba Mon Sep 17 00:00:00 2001 From: pbskfcgaw <3079421796@qq.com> Date: Sun, 9 Nov 2025 17:44:56 +0800 Subject: [PATCH] Update utils.py --- src/DjangoBlog-master/accounts/utils.py | 43 +++++++++++++++++-------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/src/DjangoBlog-master/accounts/utils.py b/src/DjangoBlog-master/accounts/utils.py index 4b94bdf..3d434df 100644 --- a/src/DjangoBlog-master/accounts/utils.py +++ b/src/DjangoBlog-master/accounts/utils.py @@ -7,43 +7,58 @@ from django.utils.translation import gettext_lazy as _ from djangoblog.utils import send_email +# 验证码的生存时间(Time To Live),设置为5分钟 _code_ttl = timedelta(minutes=5) def send_verify_email(to_mail: str, code: str, subject: str = _("Verify Email")): - """发送重设密码验证码 + """发送验证邮件 Args: - to_mail: 接受邮箱 - subject: 邮件主题 - code: 验证码 + to_mail: 接收邮箱地址 + subject: 邮件主题,默认为"Verify Email" + code: 需要发送的验证码 """ + # 生成邮件HTML内容,包含验证码信息,并支持国际化 html_content = _( "You are resetting the password, the verification code is:%(code)s, valid within 5 minutes, please keep it " "properly") % {'code': code} + # 调用邮件发送工具函数发送邮件 send_email([to_mail], subject, html_content) def verify(email: str, code: str) -> typing.Optional[str]: - """验证code是否有效 + """验证邮箱和验证码是否匹配 Args: - email: 请求邮箱 - code: 验证码 + email: 需要验证的邮箱地址 + code: 用户输入的验证码 Return: - 如果有错误就返回错误str - Node: - 这里的错误处理不太合理,应该采用raise抛出 - 否测调用方也需要对error进行处理 + 如果验证失败返回错误信息字符串,验证成功返回None + Note: + 当前错误处理方式不够合理,建议改为抛出异常的方式, + 这样调用方可以通过try-except来处理错误,而不是检查返回值 """ + # 从缓存中获取该邮箱对应的验证码 cache_code = get_code(email) + # 比较缓存中的验证码和用户输入的验证码 if cache_code != code: return gettext("Verification code error") + # 验证成功返回None def set_code(email: str, code: str): - """设置code""" + """将验证码存储到缓存中 + Args: + email: 作为缓存键的邮箱地址 + code: 需要存储的验证码 + """ cache.set(email, code, _code_ttl.seconds) def get_code(email: str) -> typing.Optional[str]: - """获取code""" - return cache.get(email) + """从缓存中获取验证码 + Args: + email: 作为缓存键的邮箱地址 + Return: + 返回缓存中的验证码,如果不存在或已过期则返回None + """ + return cache.get(email) \ No newline at end of file