1.前期准备(以QQ邮箱为例)

  • 登录QQ邮箱
    在这里插入图片描述
    在这里插入图片描述
  • 获取授权码
    在这里插入图片描述

2.settings.py文件配置

1)缓存配置

# 配置缓存
CACHES = {# 邮件激活随机数"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/1",		# 1表示redis第一个数据库"OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}}
}

2)发送邮件配置

 # 发送邮件设置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 固定写法
EMAIL_HOST = 'smtp.qq.com' # 腾讯QQ邮箱 SMTP 服务器地址
EMAIL_PORT = 25 # SMTP服务的端⼝号
EMAIL_HOST_USER = 'xxxx@qq.com' # 发送邮件的QQ邮箱
EMAIL_HOST_PASSWORD = '******' # 步骤1中获取的授权码
EMAIL_USE_TLS = True # 与SMTP服务器通信时,是否启动TLS链接(安全链接)默认false

3.配置路由

在这里插入图片描述

4.视图函数

  • user/views.py

邮件发送

邮件发送代码写在用户注册的模块内(users)

# 二次开发 try一下# 发送激活邮件# 激活链接:http://XXX/active.html?code=xxx# code: base64(b"1016_zhaoliying")try:code_num = "%d" % random.randint(1000, 9999)        # 生成随机数code = "%s_%s" % (code_num, uname)code = base64.urlsafe_b64encode(code.encode()).decode()# 存储随机数key = "active_email_%s" % unamecaches["default"].set(key, code_num, 3 * 3600 * 24)# 激活链接verify_url = 'http://127.0.0.1:7070/dadashop/templates/active.html?code=' + code# 发送激活邮件send_active_mail(email, verify_url)except Exception as e:print("send email error:", e)def send_active_mail(email, verify_url):"""发送激活邮件"""html_message = """尊敬的用户你好,请点击激活链接进行激活~~<a href="%s" target="_blank">点击此处</a>"""% verify_urlsend_mail(subject="dashopt激活邮件",  # 题目message="",  # 消息内容from_email="371659302@qq.com",  # 发送者[当前配置邮箱]recipient_list=[email],  # 接收者邮件列表html_message=html_message)

邮件激活

def active_mail(request):"""邮件激活视图逻辑1.获取查询字符串code[request.GET.get("")]2.校验code[Redis]3.激活用户[is_active=True]4.清除Redis中对应的缓存5.组织数据返回{'code': 200, 'data': '激活成功'}{'code': xxx, 'data': '错误原因'}"""code = request.GET.get("code")if not code:return JsonResponse({"code": 10102, "error": "Not code"})# 获取明文 1016_zhaoliyingcode_str = base64.urlsafe_b64decode(code.encode()).decode()number, username = code_str.split('_')key = "active_email_%s" % usernameredis_num = caches["default"].get(key)if number != redis_num:return JsonResponse({"code": 10103, "error": "Code error"})# orm更新try:user = UserProfile.objects.get(username=username, is_active=False)except Exception as e:print("Active error:", e)return JsonResponse({"code": 10104, "error": "username error"})user.is_active = Trueuser.save()# 清除缓存caches["default"].delete(key)return JsonResponse({"code": 200, "data": "激活成功"})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94212.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94212.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/94212.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

社群团购市场选择与开源技术赋能下的下沉市场开拓策略研究——以开源AI智能名片、链动2+1模式与S2B2C商城小程序为例

摘要&#xff1a;在社群团购行业面临流量成本攀升与同质化竞争的背景下&#xff0c;下沉市场因其庞大用户基数与未被充分满足的消费需求&#xff0c;成为创业者突破增长瓶颈的关键赛道。本文以拼多多成功开拓小城镇与农村市场的案例为切入点&#xff0c;结合开源AI智能名片、链…

Ollama前端:open-webui

github&#xff1a;https://github.com/open-webui/open-webui 官网&#xff1a;&#x1f3e1; Home | Open WebUI 1、docker安装&#xff08;GPU&#xff09;&#xff1a; docker run -d -p 3000:8080 --gpusall -v ollama:/root/.ollama -v open-webui:/app/backend/data …

LeetCode513:找树最左下角的值(bfs+dfs)

文章目录一、 题目描述解法一&#xff1a;层序遍历 (BFS) - 最直观的解法核心思路代码实现优缺点分析解法二&#xff1a;递归 (DFS) - 更深度的思考核心思路代码实现优缺点分析四、 总结与对比LeetCode 513 - 寻找树的最后一行的最左侧的值&#xff0c;【难度&#xff1a;中等&…

把“评论”菜单从WordPress后台移除的3种方法

在WordPress后台移除“评论”菜单&#xff0c;可以通过以下几种方法实现。以下是详细步骤&#xff1a; 方法1&#xff1a;通过代码移除(推荐) 将以下代码添加到主题的functions.php文件中(或使用CodeSnippets插件)&#xff1a; // 移除后台左侧菜单的“评论” add_action(ad…

大语言模型 LLM 通过 Excel 知识库 增强日志分析,根因分析能力的技术方案(4):只要过一遍LLM的简约版本

文章大纲 只要过一遍LLM的简约版本 1 设计原理(一句话) 2 极简数据流 3 最小依赖实现(本地 SQLite + OpenAI 兼容端点) 3.1 一次性准备:Excel → SQLite 3.2 关键词提取 + 查表(正则 / SQL) 3.3 单次 LLM 调用 4 运行结果示例 5 性能 & Token 对比 6 可扩展点 7 参考…

(转)mybatis和hibernate的 缓存区别?

MyBatis 和 Hibernate 都是流行的 Java 持久化框架&#xff0c;它们都提供了自己的缓存机制来优化数据库操作&#xff0c;减少数据库的访问次数&#xff0c;提高应用程序的性能。尽管两者都支持缓存&#xff0c;但是它们的缓存实现方式和配置有所不同。1. 缓存机制的基本区别My…

【linux内核系列】:万字详解进程间通信:消息队列

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 你讨厌的现在&#xff0c;是未来的你拼命想回去修正的战场。 ★★★ 本文前置知识&#xff1a; 匿名管道 命名管道 共享内存 前…

React 19 革命性升级:编译器自动优化,告别手动性能调优时代

概述 React 19 是 React 框架的一个重要里程碑版本&#xff0c;带来了众多突破性的改进和新特性。本文档将详细介绍 React 19 的主要变化&#xff0c;帮助开发者了解并迁移到新版本。 &#x1f680; 主要新特性 React Compiler (编译器) React 19 引入了全新的 React Compi…

UE5的渲染Debug技巧

ShaderPrint UE5相对UE4使用的ComputeShader(GPU Driven)的地方多很多。因为UE5为了方便查看ComputeShader的某些值&#xff0c;开发了“ShaderPrint”&#xff0c;方便直接在Shader 打印信息到屏幕&#xff0c;而不用采用CPUReadback在print的方式。 比如r.nanite.ShowStats…

【2025/08/03】GitHub 今日热门项目

GitHub 今日热门项目 &#x1f680; 每日精选优质开源项目 | 发现优质开源项目&#xff0c;跟上技术发展趋势 &#x1f4cb; 报告概览 &#x1f4ca; 统计项&#x1f4c8; 数值&#x1f4dd; 说明&#x1f4c5; 报告日期2025-08-03 (周日)GitHub Trending 每日快照&#x1f55…

Android系统模块编译调试与Ninja使用指南

模块编译调试方法 (此处举例framework、installd、SystemUI等模块的编译调试&#xff0c;其他类似) 1. Framework模块编译 Android系统代码的framework目录内&#xff0c;一共有3个模块单独编译&#xff1a;framework、services、framework-res.apk。 注意&#xff1a;偶尔会有…

【硬件-笔试面试题】硬件/电子工程师,笔试面试题-51,(知识点:stm32,GPIO基础知识)

目录 1、题目 2、解答 3、相关知识点 一、GPIO 基本结构与特性 1. GPIO 硬件结构 2. 主要特性 二、GPIO 工作模式 1. 输入模式 2. 输出模式 3. 复用功能模式 4. 特殊模式 三、GPIO 配置步骤&#xff08;以 STM32Cube HAL 库为例&#xff09; 1. 初始化 GPIO 时钟 …

小智服务器Java安装编译(xinnan-tech)版

github&#xff1a;https://github.com/xinnan-tech/xiaozhi-esp32-server 一、JDK 1、JDK21下载&#xff1a; https://www.oracle.com/cn/java/technologies/downloads/#jdk21-windows RPM安装&#xff1a; rpm -ivh jdk-21_linux-x64_bin.rpm 2、IDEA设置JDK File → P…

智能平台的感知进化:AI × 视频通感在群体终端协同中的应用探索

✳️ 引言&#xff1a;从单兵到集群&#xff0c;未来智能平台的协同演进 从传统的单兵执行任务到如今的“群体智能平台编组”&#xff0c;现代感知系统正经历一场由 AI、机器人与智能计算平台驱动的深度变革。过去&#xff0c;履带式无人平台在平坦地形中承担支援任务&#xf…

基于定制开发开源AI智能名片S2B2C商城小程序的B站私域流量引流策略研究

摘要&#xff1a;随着移动互联网进入存量竞争阶段&#xff0c;私域流量运营成为企业数字化转型的核心战略。B站作为中国最大的Z世代文化社区&#xff0c;其3.41亿月活跃用户中Z世代占比达58%&#xff0c;且25岁以上用户增速显著&#xff0c;用户日均使用时长超108分钟&#xff…

Spring+K8s+AI实战:3全栈开发指南

Spring、K8s、人工智能、Docker及Windows实例 以下是与Spring、K8s、人工智能、Docker及Windows实例相关的实用示例,涵盖开发、部署和集成场景: Spring Boot微服务开发 示例1:REST API构建 使用Spring Boot创建带Swagger文档的RESTful服务,集成JPA和Hibernate进行数据库…

C++ 生成动态库.dll 及 C++调用DLL,C++ 生成静态库.lib及 C++调用lib

文章目录1 C 动态库.dll生成 及 调用1.1 生成C 动态库dll1.1.1 创建项目MyDLL1.1.2 编写.h 和 .cpp文件1.1.3 设置 及 生成 DLL1.2 调用 C 动态库dll1.2.1 创建C 空项目DLLtest1.2.2 动态库配置 及代码调用测试2 C 静态库.lib 生成 及 调用3 C 生成静态库.lib及调用 &#xff0…

信创应用服务器TongWeb安装教程、前后端分离应用部署全流程

TongWeb 简介TongWeb 是东方通&#xff08;TongTech&#xff09;开发的国产Java应用服务器&#xff08;中间件&#xff09;&#xff0c;类似于国外的 WebLogic、WebSphere 和开源的 Tomcat、Jetty&#xff0c;主要用于企业级Java应用&#xff08;如J2EE&#xff09;的部署和运行…

Rust 同步方式访问 REST API 的完整指南

Rust 同步方式访问 REST API 的完整指南 在 Rust 中不使用异步机制访问 REST API 是完全可行的&#xff0c;特别适合简单应用、脚本或不需要高并发的场景。以下是完整的同步实现方案&#xff1a; &#x1f4e6; 依赖选择 推荐库&#xff1a; [dependencies] reqwest { version…

32.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--财务服务--账本与预算

在我们的孢子记账应用中&#xff0c;账本是用于记录每一笔收支流水的核心模块。通过账本&#xff0c;我们可以清晰地追踪资金的流入与流出&#xff0c;进行数据统计和分析&#xff0c;为后续的报表生成和决策支持提供基础数据。预算模块则是用于设置和管理预算的功能&#xff0…