7-Django項目實戰[user]-發送郵件激活賬號

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…