跳到主要內容

發表文章

目前顯示的是有「Django教學系列」標籤的文章

[Django+Python網頁爬蟲教學]打造具有網頁爬蟲功能的關鍵字查詢網頁

Photo by Burst on Unsplash Python網頁爬蟲在日常生活中的應用非常普遍,用來自動化蒐集所需的資料,這時候如果能夠提供使用者一個介面,即可以依據不同的需求來爬取相應的資料,提升服務的體驗及彈性。

[Django教學17]Django專案整合Amazon S3雲端服務5步驟就上手

Photo by Christian Wiediger on Unsplash Amazon 相信大家都知道,是一個非常大的電商平台,同時,也提供了許多的雲端服務,常見的像儲存服務 (S3)、 虛擬伺服器 (EC2) 及運算服務 (Lambda) 等,讓全世界的開發人員,透過整合 Amazon 的雲端服務,來提升應用程式的彈性及效能。 所以本文以 [ Django 教學 9 ] 6 個步驟搞懂 Django 上傳圖片的功能 部落格文章為基礎,分享如何將 Django 專案中的靜態檔案,如 JavaScript、CSS 及 Image (圖片)檔等,儲存至 Amazon S3 服務,讓 Django 專案有較佳的儲存彈性,而不會隨著靜態檔案的增加,使得專案無限的擴張。其中的整合步驟包含: 建立 Amazon S3 Bucket 建立 Amazon IAM 安裝 django-storages 儲存 Django 的上傳檔案到 Amazon S3 儲存 Django靜態檔案 到 Amazon S3 一、建立 Amazon S3 Bucket 在開始進行實作前,需事先到 AWS 管理主控台 註冊帳號,首頁如下圖: 點擊「建立新帳戶」,按照步驟填寫相關資料即可。建立成功且登入後,就可以看到如下圖的畫面: 接著在「尋找服務」的地方就可以查詢所需的 Amazon 服務,所以輸入 S3 就可以找到,如下圖: 點擊後,會看到 Amazon S3 服務的首頁,可以進行相關的設定及操作。首先,要建立一個儲存體,就像儲存資料一定要先建立一個資料庫一樣,選擇「建立儲存體」,如下圖: 輸入儲存體的名稱及選擇「 us-west-2 」區域,剩下的保留預設值,點擊右下角的「建立儲存體」按鈕即可,如下圖: 建立成功後,就可以在 Amazon S3 的首頁看到剛剛所建立的儲存體,如下圖: 接下來,就要設定這個 Amazon S3 儲存體的存取權限。點擊儲存體的名稱,並且切換到「許可」頁籤下的「 CORS 組態」,如下圖: 貼上範例中的以下 CORS 組態: <?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration> <CORSRule>     <Allowed...

[Django教學16]建構Django網站該知道的Email寄送方式

Photo by Austin Distel on Unsplash 相信大家在使用各大網站時,都會收到各式各樣的電子郵件訊息,像是註冊成功、限時優惠活動、新產品推出或登入通知等,可見發送電子郵件功能在網站與使用者的溝通上扮演非常重要的角色。 使用 Python 開發網站時,想要在 Django 框架中加入電子郵件的服務,該如何實作呢?本文將以 [ Django 教學 8 ] Django UserCreationForm 實作網站登入驗證及註冊功能分享 文章為範例,在註冊成功時,傳送電子郵件通知使用者。其中的重點包含: Django Email SMTP設定 Django Email 寄送方式 Django Email 樣板 客製化 一、 Django Email SMTP 設定 在進行實作前,需先利用寄件者的 Gmail 帳號取得應用程式的 Gmail 密碼,否則任何應用程式透過 Gmail 進行郵件傳送時,會被認為不安全而被 Google 封鎖,而取得的步驟可以參考 [ Python 實戰應用] Python 寄送 Gmail 電子郵件實作教學 文章的第二節。 要讓 Django 所建置出來的網站擁有寄送電子郵件的服務,就需要設定 SMTP 傳輸協定, 而本文將 使用 Gmail 所提供的 SMTP 伺服器來進行傳送。 開啟 Django 專案中的 settings.py 檔案,增加以下的 SMTP 設定: # SMTP Configuration EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' #SMTP伺服器 EMAIL_PORT = 587 #TLS通訊埠號 EMAIL_USE_TLS = True #開啟TLS(傳輸層安全性) EMAIL_HOST_USER = 'example@gmail.com' #寄件者電子郵件 EMAIL_HOST_PASSWORD = '****' #Gmail應用程式的密碼 設定完成後,當 Django 網站要寄送電子郵件時, Gmail 的 SMTP ...

[Django教學15]Django連接PostgreSQL資料庫手把手教學

Photo by Matthew Guay on Unsplash 大家在使用 Python 的 Django 框架 來建置網站時,預設會提供 SQLite 輕量資料庫來進行開發,通常適用在規模不大的小型應用程式上,但是,隨著網站功能的擴大或用戶數的增加,就會需要使用像 PostgreSQL、MariaDB、 MySQL 及 Oracle 等企業級的資料庫,來提升資料的存取效能,好消息是,這四家資料庫 Django 官方皆有支援。 所以本文將以 PostgreSQL 資料庫,來示範如何在 Django 框架中,將預設連接的 SQLite 資料庫,改為 PostgreSQL 資料庫,讓 Django 所建置出來的網站,能有較佳的資料處理。其中主要的步驟包含: 安裝 PostgreSQL 建立 PostgreSQL 資料庫 設定 Django 連接 PostgreSQL 一、安裝 PostgreSQL 首先,前往 PostgreSQL 官方下載 網站,如下圖: 依照作業系統來下載安裝檔即可,本文將以 Windows 作業系統為例進行說明。開啟安裝檔後,可以看到如下圖的畫面: 安裝過程基本上都保留預設值,並且下一步就好。其中,有一個步驟會需要設定 PostgreSQL 的密碼,如下圖: 設定完成,點擊下一步來設定 Port 號,這邊同樣保留預設值,如下圖: 經過一段時間的安裝後,會看到設定完成的畫面,如下圖: 點擊 Finish ,接著在下拉選單中選擇 PostgreSQL ,如下圖: 點擊下一步,在 Database Server 的地方,選擇最新版的 PostgreSQL 資料庫伺服器,如下圖: 最後,勾選 Skip Installation ,如下圖: 接著,點擊 Finish 就 完成 PostgreSQL 的安裝了。 二、建立 PostgreSQL 資料庫 PostgreSQL 安裝完成後,接下來就可以為 Django 專案建立資料庫,來儲存專案所需的資料。 在剛剛的 PostgreSQL 安裝過程中,有幫我們安裝了一個 pgAdmin 工具,讓開發人員能夠有效率的進行 PostgreSQL 資料庫操作。 開啟的方式除了在 Windows 開始的地方搜尋 pgAdmin 關鍵字外,也可以在安裝目錄...

[Django教學14]解析5個常用的Django Class-based Views使用方式

Photo by Austin Distel on Unsplash 在一般的 Django 專案開發,可以看到 Django 應用程式 (APP) 下的 views.py 檔案中,依照功能的需求撰寫了許多的檢視函式 (View Function) ,這種寫法就稱為函式導向的檢視 (Function-based Views) ,雖然較為直覺,但是隨著 Django 專案的規模越來越大,這樣的寫法就像是在 Python 專案中寫了許多的函式 (Function) 一樣,對於未來的維護及擴充性,較不理想。 所以,這時候就會使用 Python 物件導向 (OOP) 的概念,將許多的函式 (Function) 模組化為類別 (Class) 及方法 (Method) ,來提高程式碼的重用性及維護性。 Django 也是相同的道理,它提供了許多內建的檢視類別,讓開發人員能夠藉由覆寫 (Overriding) 的方式 ,將函式導向的檢視 (Function-based Views) ,封裝成類別導向的檢視 ( Class-based Views ) ,不但具有物件導向 (OOP) 的優點外, Django 在背後也幫我們做了許多的事情,讓程式碼的寫法能夠更加簡潔。 因此,本文將利用 5 個常用的Django檢視類別 ,來實作待辦清單 (To Do List) 網站,藉此 與函式導向的檢視 (Function-based Views) 寫法作 比較 ,重點包含: 前置作業 Django ListView ( 清單檢視類別 ) Django CreateView ( 新增檢視類別 ) Django UpdateView ( 修改檢視類別 ) Django DeleteView ( 刪除檢視類別 ) Django DetailView ( 內容檢視類別 ) 一、前置作業 在進行今天的實作前,先來說明一下本文所使用的待辦清單 (To Do List ) 資料模型,如下範例: from django.db import models from django.utils import timezone class Todo(models.Model): title = models.CharField(max_length=100) ...