Django視圖與路由:打造你的網絡帝國

Hello,我是阿佑,上期給大家講了 Django ORM魔法:用Python代碼召喚數據庫之靈!
今天將帶大家深入探討了視圖的工作原理、如何編寫高效的函數視圖和類視圖,以及如何巧妙地利用URL路由來提升應用的用戶體驗和可維護性。通過實際案例和代碼示例,揭示了Django視圖與路由設計的藝術,幫助你快速從新手成長為Django高手。
一起來開啟你的Django之旅,創造令人矚目的Web杰作吧!

文章目錄

      • 1. 視圖的基本概念
        • 1.1 視圖的作用與原理
        • 1.2 請求與響應處理流程
        • 1.3 視圖函數的參數與返回值
      • 2. 函數視圖與類視圖
        • 2.1 函數視圖的實現
        • 2.2 類視圖基礎
        • 2.3 Mixins與通用視圖的應用
        • 2.4 函數視圖與類視圖的對比選擇
      • 3. URLconf 和路由系統
        • 3.1 URLconf 的配置過程
        • 3.2 路由匹配規則詳解
        • 3.3 URL 參數傳遞方法
      • 4. 正則表達式與路徑轉換器
        • 4.1 正則表達式在路由中的應用
        • 4.2 Django 內置路徑轉換器介紹
        • 4.3 自定義路徑轉換器的創建與使用
      • 5. URL 路由的最佳實踐
        • 5.1 路由組織結構與命名空間
        • 5.2 URL包含與模塊化設計
        • 5.3 URL 跳轉與反向解析策略
      • 6. 結論
        • 6.1 Django 視圖與 URL 路由的核心要點回顧
        • 6.2 實踐中提升應用可維護性的建議
    • 參考文獻

在這里插入圖片描述

1. 視圖的基本概念

1.1 視圖的作用與原理

想象一下,你走進一家餐廳,服務員會根據你的點餐需求,為你準備相應的食物。在Django的世界里,視圖就扮演著服務員的角色。當用戶通過瀏覽器發起請求時,視圖會根據請求的內容,決定如何響應——是展示一個網頁,還是返回一個錯誤信息,或者執行一些后臺操作。

視圖是Django應用的核心,它們是處理用戶請求并返回響應的函數或類。每個視圖都對應一個特定的URL,當用戶訪問這個URL時,Django就會調用相應的視圖來處理請求。

1.2 請求與響應處理流程

這個過程就像是一次精彩的舞臺劇。當用戶(觀眾)點擊一個鏈接或提交一個表單(購票)時,他們的請求(入場)就會通過Django的URL分發器(檢票員)傳遞給相應的視圖(演員)。視圖根據請求的內容(劇情需求)進行處理,可能是查詢數據庫(準備道具),處理數據(排練),最后生成一個HTML頁面(表演)作為響應發送回用戶。

1.3 視圖函數的參數與返回值

視圖函數可以接收多種參數,這些參數就像是演員們在表演前需要了解的劇情細節。最常見的參數是request對象,它包含了用戶請求的所有信息。此外,視圖還可以接收通過URL傳遞的參數,比如idname,這些參數幫助視圖了解用戶的特定需求。

至于返回值,視圖通常會返回一個HttpResponse對象,它包含了發送給用戶的響應內容。這就像是演員在舞臺上的表演,最終呈現給觀眾的是一場視覺盛宴。

現在,我們已經搭建起了視圖的基本概念框架,就像是一個劇本的大綱。接下來,我們將深入探討函數視圖與類視圖,就像挑選演員一樣,為每個場景選擇合適的表演者。但在此之前,讓我們先休息一下,為接下來的精彩內容養足精神!

2. 函數視圖與類視圖

2.1 函數視圖的實現

想象一下,你有一個魔法盒子,你只需要告訴它你想要什么,它就會變出你想要的東西。在Django的世界里,函數視圖就像是這個魔法盒子。它是一個簡單的Python函數,接收request對象作為參數,然后根據請求的內容返回一個響應。

def my_view(request):# 處理請求,比如查詢數據庫,處理數據等return HttpResponse("你好,世界!")

這個例子中,my_view函數就是一個函數視圖,當用戶訪問與之關聯的URL時,Django就會調用這個函數,并返回"你好,世界!"。

2.2 類視圖基礎

現在,讓我們來談談類視圖。如果你認為函數視圖是魔法盒子,那么類視圖就像是魔法學院。類視圖提供了一個更加結構化和靈活的方式來處理請求。它們是繼承自View類的Python類,可以包含多個方法來處理不同類型的HTTP請求。

from django.views import View
from django.http import HttpResponseclass MyView(View):def get(self, request):# 處理GET請求return HttpResponse("歡迎來到魔法學院!")def post(self, request):# 處理POST請求return HttpResponse("你提交了數據!")

在這個例子中,MyView類是一個類視圖,它有兩個方法:getpost,分別用來處理GET和POST請求。

2.3 Mixins與通用視圖的應用

Mixins就像是魔法學院里的各種魔法課程,它們提供了一些特定的功能,可以被多個視圖類所使用。Django的通用視圖(如ListViewDetailView)就像是這些魔法課程的集合,它們實現了一些常見的視圖模式,可以大幅簡化我們的代碼。

from django.views.generic import ListView
from .models import MyModelclass MyModelListView(ListView):model = MyModel

這個例子中的MyModelListView是一個通用視圖,它自動為MyModel模型提供列表頁面。

2.4 函數視圖與類視圖的對比選擇

選擇函數視圖還是類視圖,就像是選擇是去魔法盒子還是去魔法學院。函數視圖簡單直接,適合快速實現簡單的需求。而類視圖則更加強大和靈活,適合構建復雜的應用。

  • 函數視圖:快速、簡單,適合輕量級的任務。
  • 類視圖:強大、靈活,適合復雜的應用和重用代碼。

最終,選擇哪一種,取決于你的具體需求和個人偏好。就像選擇魔法盒子還是魔法學院,關鍵在于你想要達到什么樣的魔法效果。

現在,我們已經了解了函數視圖和類視圖的魔力,接下來,我們將探索URLconf和路由系統的奧秘,就像繪制一張魔法地圖,指引我們到達每一個魔法場景。準備好了嗎?讓我們繼續這場魔法之旅!

3. URLconf 和路由系統

3.1 URLconf 的配置過程

在Django的世界里,URLconf就像是一張魔法地圖,它指引著用戶(冒險者)如何找到他們想去的地方(視圖)。這張地圖由一系列的URL模式(路徑)和視圖(目的地)組成,它們告訴Django如何將用戶請求的URL映射到相應的視圖函數。

想象一下,你手中有一張藏寶圖,上面標記了各種神秘的地點和通往這些地點的秘密通道。在Django中,你的urls.py文件就扮演著這張藏寶圖的角色。你需要在這個文件中定義一系列的path()re_path()函數,每個函數都對應著一個特定的URL模式和視圖。

# urls.py
from django.urls import path
from . import viewsurlpatterns = [path('hello/', views.hello_world, name='hello'),path('calculator/', views.calculator, name='calculator'),
]

在這個例子中,我們定義了兩個路徑:一個是通往“hello_world”視圖的“hello”路徑,另一個是通往“calculator”視圖的“calculator”路徑。

3.2 路由匹配規則詳解

路由匹配就像是一場尋寶游戲,Django會根據用戶請求的URL,按照你在URLconf中定義的順序,逐個嘗試匹配這些路徑。一旦找到匹配的路徑,就會停止搜索,并將請求傳遞給對應的視圖。

這個過程就像是你拿著藏寶圖,一邊走一邊對照地圖上的標記。當你走到一個標記點時,你會停下來,看看這個標記點是否就是你要找的寶藏所在地。如果是,你就找到了寶藏;如果不是,你就繼續前進,直到找到正確的地點。

在Django中,路由匹配支持多種類型的參數,包括動態參數和命名空間。動態參數允許你在URL中包含變量,這樣同一個視圖就可以處理多種不同的請求。

# urls.py
path('user/<int:user_id>/', views.user_profile, name='user_profile'),

這個例子中的<int:user_id>就是一個動態參數,它表示用戶ID,可以是任何整數。

3.3 URL 參數傳遞方法

URL參數就像是你給服務員的小紙條,上面寫著你的特殊要求。在Django中,你可以通過URL傳遞參數給視圖,視圖函數會根據這些參數來定制響應。

想象一下,你去餐廳點菜,你可能會告訴服務員:“我想要一份宮保雞丁,不要放辣椒。”這里的“不要放辣椒”就是一個參數,服務員會根據這個參數來準備你的菜。

在Django中,你可以通過查詢字符串(如?name=John)或者動態URL路徑(如/user/123/)來傳遞參數。

# views.py
def user_profile(request, user_id):# 使用user_id這個參數來獲取用戶信息user = get_object_or_404(User, pk=user_id)return render(request, 'user_profile.html', {'user': user})

在這個例子中,user_id是一個通過URL傳遞的參數,視圖函數user_profile會使用這個參數來獲取并顯示用戶信息。

現在,我們已經掌握了URLconf和路由系統的魔法。就像擁有了一張詳細的藏寶圖,我們可以輕松地引導用戶到達他們想去的地方。接下來,我們將探索正則表達式和路徑轉換器的奧秘,這將幫助我們更精確地控制這張魔法地圖上的路徑。準備好了嗎?讓我們繼續這場尋寶之旅!
在這里插入圖片描述

4. 正則表達式與路徑轉換器

4.1 正則表達式在路由中的應用

正則表達式就像是一把萬能鑰匙,能夠解鎖各種復雜的URL模式。在Django的URL路由中,正則表達式允許你定義復雜的URL模式,以匹配特定的請求。

想象一下,你手里有一把能夠打開任何鎖的神奇鑰匙。在Django中,這把鑰匙就是正則表達式。通過它,你可以精確地指定URL的結構,包括數字、字母、特定格式的字符串等。

# urls.py
from django.urls import re_path
from . import viewsurlpatterns = [re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
]

在這個例子中,re_path函數使用了正則表達式r'^articles/(?P<year>[0-9]{4})/$'來定義一個URL模式。這個模式匹配以articles/開頭,后面跟著四位數字年份,如articles/2024/,并且將這個年份作為一個名為year的參數傳遞給year_archive視圖。

4.2 Django 內置路徑轉換器介紹

Django內置了一些路徑轉換器,這些轉換器就像是預制的鎖,你可以直接使用它們來簡化URL模式的定義。這些路徑轉換器包括strintsluguuid等,它們分別用于匹配字符串、整數、URL安全的字符串和通用唯一識別碼。

# urls.py
from django.urls import path
from . import viewsurlpatterns = [path('blog/<int:year>/slug/<slug:slug>/', views.blog_detail),
]

在這個例子中,<int:year><slug:slug>是兩個內置的路徑轉換器。year將匹配一個整數,而slug將匹配一個URL安全的字符串,如blog/2024/hello-world/

4.3 自定義路徑轉換器的創建與使用

如果你覺得現有的路徑轉換器不夠用,或者想要更精確地控制URL模式,你可以創建自定義的路徑轉換器。這就像是打造一把專屬的鑰匙,來打開特定的鎖。

# converters.py
from django.urls import register_converter
from somewhere import validate_emailclass EmailConverter:regex = '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}'def to_python(self, value):return validate_email(value)def to_url(self, value):return str(value)register_converter(EmailConverter, 'email')
# urls.py
from django.urls import path
from . import views
from .converters import EmailConverterurlpatterns = [path('user/<email:user_email>/', views.user_profile),
]

在這個例子中,我們首先定義了一個EmailConverter類,它匹配電子郵件地址的正則表達式。然后我們使用register_converter函數注冊了這個轉換器,并在URL模式中使用了<email:user_email>來匹配電子郵件地址。

現在,我們已經掌握了正則表達式和路徑轉換器的魔法,這讓我們能夠更加靈活和精確地控制URL路由。就像擁有了一套完整的開鎖工具,我們可以打開任何復雜的鎖。接下來,我們將探索URL路由的最佳實踐,這將幫助我們構建一個既強大又易于維護的Django應用。準備好了嗎?讓我們繼續這場魔法之旅!

5. URL 路由的最佳實踐

5.1 路由組織結構與命名空間

在Django的URL路由世界里,組織結構就像是城市規劃。一個好的城市規劃可以讓居民更容易找到目的地,同樣,一個好的URL路由組織結構可以讓開發者和用戶更容易理解和使用應用。

想象一下,你在一個大城市中,街道和區域都被合理地劃分和命名,這樣無論你想去哪里,都能找到一條清晰的路線。在Django中,我們可以通過將urls.py文件分散到不同的應用中,來實現類似的效果。

# myapp/urls.py
from django.urls import path
from . import viewsapp_name = 'myapp'
urlpatterns = [path('articles/', views.article_list, name='article_list'),
]

在這個例子中,我們為myapp應用創建了一個獨立的urls.py文件,并定義了一個名為myapp的命名空間。這樣,我們就可以通過myapp:article_list這樣的名稱來引用這個URL。

5.2 URL包含與模塊化設計

在URL路由設計中,"包含"就像是在一個大商場里設立不同的專賣店。每個專賣店都有自己的特色和商品,但它們都被包含在這個大商場中,方便顧客一站式購物。

在Django中,我們可以使用include()函數來實現URL的包含,這樣可以讓每個應用管理自己的URL,保持代碼的模塊化。

# project/urls.py
from django.urls import include, pathurlpatterns = [path('blog/', include('blog.urls')),path('shop/', include('shop.urls')),
]

在這個例子中,blog/shop/是兩個不同的應用,它們各自有自己的URL配置,被包含在項目的主urls.py文件中。

5.3 URL 跳轉與反向解析策略

在URL路由的世界中,跳轉就像是從一個場景切換到另一個場景。而反向解析,則像是在場景之間建立一條秘密通道,讓你可以快速從一個場景跳轉到另一個場景。

在Django中,我們可以使用redirect()函數來實現URL跳轉,而反向解析則通過reverse()函數來實現。這樣,我們就可以根據需要,將用戶從一個頁面引導到另一個頁面。

# views.py
from django.shortcuts import redirect, reversedef some_view(request):# 直接跳轉到另一個URLreturn redirect('some-url-name')def another_view(request):# 使用reverse進行反向解析,跳轉到article_list頁面return redirect(reverse('article_list'))

在這個例子中,redirect('some-url-name')會將用戶重定向到名為some-url-name的URL,而redirect(reverse('article_list'))則會根據article_list這個名稱反向解析出對應的URL,并進行跳轉。

現在,我們已經掌握了URL路由的最佳實踐,這就像是擁有了一張精心規劃的城市地圖,無論用戶想去哪里,都能輕松找到正確的路線。接下來,我們將回顧Django視圖與URL路由的核心要點,并提出一些提升應用可維護性的建議。準備好了嗎?讓我們繼續這場精彩的旅程!

6. 結論

6.1 Django 視圖與 URL 路由的核心要點回顧

隨著我們的旅程即將到達尾聲,讓我們來回顧一下Django視圖與URL路由的核心要點,就像是在結束一場精彩的電影后,重溫那些難忘的瞬間。

視圖是我們應用的心臟,負責處理用戶的請求并生成響應。它們可以是簡單的函數視圖,也可以是強大的類視圖,甚至是通用視圖,這些都取決于你的具體需求。

URL路由則是連接用戶和視圖的橋梁。通過精心設計的URLconf,我們能夠確保每個請求都能被正確地引導到相應的視圖。而正則表達式和路徑轉換器則是我們在這個過程中的得力助手,它們幫助我們精確地定義和匹配URL模式。

最佳實踐的運用,讓我們的URL路由不僅清晰易懂,而且易于維護和擴展。通過合理的組織結構和命名空間的使用,以及模塊化的URL設計,我們的應用就像是一個個精心布置的房間,每個房間都有其獨特的功能和風格。

6.2 實踐中提升應用可維護性的建議

在我們結束這場Django視圖與URL路由的魔法之旅之前,我想給大家一些建議,幫助你們在未來的實踐中提升應用的可維護性。

保持簡潔:就像寫詩一樣,簡潔明了的代碼總是更容易理解和維護。避免過度復雜的URL模式和視圖邏輯,讓每個部分都盡可能簡單。

使用命名空間:通過為每個應用定義命名空間,我們可以清晰地區分不同應用的URL,這就像是給每個房間貼上標簽,方便我們快速找到目的地。

模塊化設計:將URL路由分散到不同的應用中,而不是全部集中在一個urls.py文件中。這樣,每個應用都可以獨立管理自己的路由,使得整個項目更加模塊化。

利用反向解析:通過reverse()函數,我們可以避免在代碼中硬編碼URL,這不僅使得代碼更加清晰,而且當URL發生變化時,我們也更容易進行更新。

編寫文檔:就像是一本旅行指南,良好的文檔能夠幫助你和你的團隊更好地理解和使用你的應用。

在這里插入圖片描述

隨著我們的旅程結束,希望你們不僅掌握了Django視圖與URL路由的知識,更學會了如何將這些知識應用到實踐中,構建出既強大又易于維護的應用。記得,每一次編碼都是一次新的冒險,而每一次冒險都充滿了無限可能。祝你們在Django的世界里,創造屬于自己的魔法!

我是阿佑,一個致力于把晦澀的技術講得有趣的中二青年,歡迎持續關注 ~


參考文獻

  1. Django官方文檔:視圖 - 這是學習Django視圖最權威的資源。官方文檔詳細解釋了視圖的概念、如何編寫視圖以及視圖的不同類型。

    • 鏈接:Django官方文檔:視圖
  2. Django官方文檔:URL調度器 - 這部分文檔詳細介紹了Django的URL分發機制,包括URLconf的組織、正則表達式和路徑轉換器的使用。

    • 鏈接:Django官方文檔:URL調度器
  3. Advanced URL Routing in Django - 這篇文章提供了關于Django URL路由的一些高級技巧和最佳實踐,適合有一定基礎的開發者閱讀。

    • 鏈接:Advanced URL Routing in Django
  4. Two Scoops of Django: Best Practices for Django 1.8 - 這本書由Daniel Roy Greenfeld和Audrey Roy Greenfeld撰寫,提供了大量關于Django開發的最佳實踐,包括視圖和URL的設計。

  5. Test-Driven Development with Python - 作者Harry J.W. Percival介紹了如何使用測試驅動開發(TDD)的方法來構建Django應用,包括視圖和URL的設計和測試。

  6. Django for Beginners - 這本書由William S. Vincent撰寫,適合初學者,涵蓋了Django的基礎知識,包括視圖和URL路由的簡單介紹。

  7. Django Cookbook - 這是一本實踐指南,包含了大量的示例和技巧,可以幫助你解決在Django開發過程中遇到的各種問題,包括視圖和URL路由的高級應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21017.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21017.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21017.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

最新h5st(4.7.2)參數分析與純算法還原(含算法源碼)

文章目錄 1. 寫在前面2. 加密分析3. 算法還原 【&#x1f3e0;作者主頁】&#xff1a;吳秋霖 【&#x1f4bc;作者介紹】&#xff1a;擅長爬蟲與JS加密逆向分析&#xff01;Python領域優質創作者、CSDN博客專家、阿里云博客專家、華為云享專家。一路走來長期堅守并致力于Python…

操作系統 實驗29 同步與互斥

1、并發線程同步與互斥 源程序&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <string.h> int num30,count10; pthread_mutex_t mylockPTHREAD_MUTEX_INITIALIZER; void *sub1(voi…

圖解 Python 編程(10) | 錯誤與異常處理

&#x1f31e;歡迎來到Python的世界 &#x1f308;博客主頁&#xff1a;卿云閣 &#x1f48c;歡迎關注&#x1f389;點贊&#x1f44d;收藏??留言&#x1f4dd; &#x1f31f;本文由卿云閣原創&#xff01; &#x1f4c6;首發時間&#xff1a;&#x1f339;2024年6月2日&…

LangChain學習之prompt格式化與解析器使用

1. 學習背景 在LangChain for LLM應用程序開發中課程中&#xff0c;學習了LangChain框架擴展應用程序開發中語言模型的用例和功能的基本技能&#xff0c;遂做整理為后面的應用做準備。視頻地址&#xff1a;基于LangChain的大語言模型應用開發構建和評估高 2. 先準備嘗試調用O…

數據結構(C):從初識堆到堆排序的實現

目錄 &#x1f31e;0.前言 &#x1f688; 1.堆的概念 &#x1f688; 2.堆的實現 &#x1f69d;2.1堆向下調整算法 &#x1f69d;2.2堆的創建&#xff08;堆向下調整算法&#xff09; ??2.2.1 向下調整建堆時間復雜度 &#x1f69d;2.3堆向上調整算法 &#x1f69d;2.…

testcontainer

在我們的項目中&#xff0c;單元測試是保證我們代碼質量非常重要的一環&#xff0c;但是我們的業務代碼不可避免的需要依賴外部的系統或服務如DB&#xff0c;redis&#xff0c;其他外部服務等。如何保證我們的測試代碼不受外部依賴的影響&#xff0c;能夠穩定的運行成為了一件比…

c++------類和對象(下)包含了this指針、構造函數、析構函數、拷貝構造等

文章目錄 前言一、this指針1.1、this指針的引出1.2、 this指針的特性 二、類的默認的六個構造函數2.1、構造函數簡述2.2構造函數 三、析構函數3.1、析構函數引出3.2、特點&#xff1a; 四、拷貝構造4.1、引入4.2、特征&#xff1a;4.3、默認拷貝構造函數 總結 前言 在本節中&a…

中國的歷史看中國的經濟發展

從中國的歷史看中國的經濟發展&#xff0c;可以發現其經歷了幾個顯著的階段&#xff0c;每個階段都有其獨特的特點和成就&#xff1a; 古代經濟&#xff1a;中國古代經濟以農業為主&#xff0c;實行井田制&#xff0c;重視水利工程的建設&#xff0c;如都江堰、靈渠等。 商業發…

Compose Multiplatform 1.6.10 發布,解釋一些小問題, Jake 大佬的 Hack

雖然一直比較關注跨平臺開發&#xff0c;但其實我很少寫 Compose Multiplatform 的內容&#xff0c;因為關于 Compose Multiplatform 的使用&#xff0c;其實我并沒在實際生產環境上發布過&#xff0c;但是這個版本確實值得一提&#xff0c;因為該版本包含&#xff1a; iOS Bet…

數據庫(15)——DQL分頁查詢

DQL分頁查詢語法 SELECT 字段列表 FROM 表名 LIMIT 起始索引&#xff0c;查詢記錄數; 注&#xff1a;起始索引從0開始&#xff0c;起始索引&#xff08;查詢頁碼-1&#xff09;*每頁顯示記錄數。 如果查詢的是第一頁&#xff0c;可以省略起始索引。 示例&#xff1a;查詢第一頁…

【考研數學】概率論如何復習?跟誰好?

概率論一定要跟對老師&#xff0c;如果跟對老師&#xff0c;考研基本上能拿滿分 概率論在考研試卷中占比并不大&#xff0c;其中&#xff1a; 高等數學&#xff0c;90分&#xff0c;約占比60%; 線性代數&#xff0c;30分&#xff0c;約占比20%; 概率論與數理統計&#xff0…

hive中的join操作及其數據傾斜

hive中的join操作及其數據傾斜 join操作是一個大數據領域一個常見的話題。歸根結底是由于在數據量超大的情況下&#xff0c;join操作會使內存占用飆升。運算的復雜度也隨之上升。在進行join操作時&#xff0c;也會更容易發生數據傾斜。這些都是需要考慮的問題。 過去了解到很…

每日5題Day15 - LeetCode 71 - 75

每一步向前都是向自己的夢想更近一步&#xff0c;堅持不懈&#xff0c;勇往直前&#xff01; 第一題&#xff1a;71. 簡化路徑 - 力扣&#xff08;LeetCode&#xff09; class Solution {public String simplifyPath(String path) {Deque<String> stack new LinkedList…

mysql的增刪查改(進階)

目錄 一. 更復雜的新增 二. 查詢 2.1 聚合查詢 COUNT SUM AVG MAX MIN 2.1.2 分組查詢 group by 子句 2.1.3 HAVING 2.2 聯合查詢/多表查詢 2.2.1 內連接 2.2.2 外連接 2.2.3 全外連接 2.2.4 自連接 2.2.5 子查詢 2.2.6 合并查詢 一. 更復雜的新增 將從表名查詢到…

自動化辦公01 smtplib 郵件?動發送

目錄 一、準備需要發送郵件的郵箱賬號 二、發送郵箱的基本步驟 1. 登錄郵箱 2. 準備數據 3. 發送郵件 三、特殊內容的發送 1. 發送附件 2. 發送圖片 3. 發送超文本內容 4.郵件模板內容 SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;即簡單郵件傳輸協議…

霍夫曼樹教程(個人總結版)

背景 霍夫曼樹&#xff08;Huffman Tree&#xff09;是一種在1952年由戴維霍夫曼&#xff08;David A. Huffman&#xff09;提出的數據壓縮算法。其主要目的是為了一種高效的數據編碼方法&#xff0c;以便在最小化總編碼長度的情況下對數據進行編碼。霍夫曼樹通過利用出現頻率…

【Qt秘籍】[009]-自定義槽函數/信號

自定義槽函數 在Qt中自定義槽函數是一個直接的過程&#xff0c;槽函數本質上是類的一個成員函數&#xff0c;它可以響應信號。所謂的自定義槽函數&#xff0c;實際上操作過程和定義普通的成員函數相似。以下是如何在Qt中定義一個自定義槽函數的步驟&#xff1a; 步驟 1: 定義槽…

<jsp:setProperty>設置有參構造函數創建的自定義對象的屬性

假設某一個類&#xff08;如TextConverter類&#xff09;有一個無參構造函數和一個有參構造函數&#xff0c;我們可以在Servlet里面先用有參構造函數自己new一個對象出來&#xff0c;存到request.setAttribute里面去。 Servlet轉發到jsp頁面后&#xff0c;再在jsp頁面上用<j…

django基于大數據+Spring的新冠肺炎疫情實時監控系統設計和實現

設計一個基于Django(后端)和Spring(可能的中間件或服務集成)的新冠肺炎疫情實時監控系統涉及多個方面,包括數據收集、數據處理、數據存儲、前端展示以及可能的中間件服務(如Spring Boot服務)。以下是一個大致的設計和實現步驟: 1. 系統架構 前端:使用Web框架(如Reac…

三種字符串的管理方式

NSString的三種實現方式 OC這個語言在不停的升級自己的內存管理&#xff0c;盡量的讓自己的 OC的字符串 問題引入 在學習字符串的過程中間會遇到一個因為OC語言更新造成的問題 例如&#xff1a; int main(int argc, const char * argv[]) {autoreleasepool {NSString* str1 …