長期以來我一直想學習 Django 框架,但另一個更緊迫的專案始終佔據優先地位。和許多開發人員一樣,我在機器學習方面使用python,但當我第一次學習Web 程式設計時,PHP 仍然佔據主導地位,所以當我需要選擇一個新的複雜框架來創建Web 應用程式來發布我的機器時學習工作中,我還是轉向了PHP。一段時間以來,我一直在使用名為 Laravel 的框架來建立我的網站,這個 PHP 框架向我介紹了現代 Web 程式設計的模型-視圖-控制器模式。讓事情變得更加複雜的是,我喜歡使用現代 JavaScript 框架來建立我的前端。我最熟悉 Vue.js,因此對於這個項目,我堅持使用 Vue.js,儘管更常見的是人們使用 React。
為什麼要使用複雜的框架?學習 Django、Laravel、React 或 Vue 等框架的最大挑戰是什麼?
每個人都有自己的答案,但我越來越喜歡 MVC 框架,因為它們提供了很多關於如何建立應用程式的指導。它使我不必每次都重新發明輪子。起初,這些框架看起來有些限制和神秘,但一旦我熟悉了結構,我發現添加新功能會更容易。
挑戰在於事情可能變得過於簡單。像 Django 這樣的框架依賴許多速記或假設,這些速記或假設可能基於熟悉的概念,但在 Django 中具有特定的不熟悉的名稱和結構。在我的應用程式中,Django 處理 API 和所有 Web 路由。如果我想要新增新的API 端點,我需要將一個函數新增到view.py 中的檔案中,然後前往urls.py 檔案並新增一條語句來匯入該函數,並新增另一個語句來定義該函數所在的URL。 API端點可用。之後,我需要編輯前端 Vue 元件以使用 JavaScript 查詢該端點以取得資料並向使用者顯示或操作它。
一旦我的專案建立起來,增加這樣的功能很快。我只需要添加大約四行程式碼,然後我就可以專注於views.py 檔案中新函數所需的邏輯,以處理 HTTP 請求並以 JSON 格式返回所需的資料。具有挑戰性的部分是了解這些檔案是什麼以及它們如何協同工作來創建整個應用程式。
我發現學習像 Django 這樣的框架的最佳方法是找到一個工作範例並開始嘗試進行一些小的更改以了解資料流。當概念開始變得更加清晰且更有意義時,請參閱文件。要求人工智慧模型解釋程式碼片段以及框架中不同標準檔案的作用。很快我們就會意識到這些工具的出現是為了從長遠來看節省時間並簡化應用程式的維護和更新。由於 Django 和 Vue 框架具有標準結構,因此當您稍後再回顧它們時,您會發現更容易理解為什麼以某種方式編碼,並且更容易重新熟悉您的工作。由於您熟悉他們的應用程式的基本結構,因此更容易學習別人的應用程式並理解核心功能。
那麼 Django 的一些基本知識可以幫助人們入門嗎?對我來說,首先要了解的是,Django 專案是透過執行命令來建立新的Django 專案而產生的,這會產生一組基本檔案和資料夾,這些檔案和資料夾構成了可用於開始建置的「基礎項目」。專案資料夾將包含幾個 python 文件,其中的設定適用於整個專案。您會發現自己經常存取的重要文件是 settings.py(所有設定都在其中)和 urls.py。當您有「Django 如何決定將靜態檔案放在哪裡」之類的問題時,答案通常位於 settings.py 中的某個位置。當您想要為應用程式新增 URL 時,您需要更新 urls.py 檔案。
除了這些專案級檔案之外,您還可以為專案中的每個應用程式建立一個資料夾。然後需要在 settings.py 檔案中註冊(即命名)這些應用程式。我的專案中的主應用程式資料夾稱為文件。在該資料夾中,我有一個 models.py 檔案、一個 serializer.py 檔案、一個views.py 檔案。還有其他的,但這是重要的三個。
在 models.py 中,我指定了我的 Document 物件及其所具有的欄位。 Django 幫我在 IRIS 資料庫中建立一個 Documents 表,其中包含保存我計劃儲存在 Document 物件中的資訊所需的架構。在我的models.py 檔案中,我告訴它我的文件都有一個名稱(不超過255 個字元的字串)、一個內容欄位(只是大量文字)以及一個資料庫名稱(其中向量)儲存(另一個文字欄位)、嵌入類型(另一個文字欄位),最後是向量嵌入維度(一個數字)。使用這些定義,Django 建立具有必要列類型的必要資料庫表。將物件儲存到資料庫就像 Document.save() 一樣簡單。
serializer.py 檔案內部只是一個關於如何將物件轉換為 JSON 的定義,反之亦然。對於基本用例,有一個標準方法來定義它,您可以在這個專案中看到它。
現在我們進入 Django 的重點,views.py 檔案。我們在這裡定義接受 HTTP 請求並傳回資料(例如整個 HTTP 回應)或 JSON API(如果是 JSON API)的函數。這意味著 Django 可以提供整個網頁,也可以作為您應用程式的前端,或者它可以只提供 JSON 數據,您可以在完全不同的平台上建立您的前端。
一開始使用所有這些看似任意的檔案和約定可能會讓人感覺很麻煩,但是一旦您發現這樣做意味著您的應用程式剛開始工作並處理HTTP 請求並提供正確的資料作為回應,它就可以不斷建構新的特性和功能是非常有趣的。一旦您定義了一個物件、Web 路由和函數來處理 HTTP 請求,您就會意識到定義第二個和第三個物件來為應用程式新增功能是多麼容易。
我從 github 上的 @guillaume.Rongier7183 創建的 Iris Django 模板中分叉了我的專案:https://github.com/grongierisc/iris-django-template
此範本僅包含 Django,對於學習 Django 框架非常有幫助。 我所做的主要新增功能之一是添加帶有 Tailwind CSS 的 Vue.js,以表明您可以將現代 Javascript 框架與此套件集成,並在 IRIS 上運行單頁應用程式。單頁面應用程式是一個 JavaScript 應用程序,它發送 xhr 請求以獲取 JSON 資料並動態更新頁面,而無需完全重新載入頁面。它有其優點和缺點,但它是現代 Web 開發的標誌。
我鼓勵人們不僅將我的專案視為IRIS 上的RAG 和Vector Stores 的範例,而且將其視為使用Django 與Vue.js 和Tailwind 的模板,以便在其之上輕鬆快速地創建現代靈活的Web 應用程式虹膜。該儲存庫位於 Github 上:https://github.com/mindfulcoder49/iris-django-template
我很樂意回答任何問題或提供任何見解,以了解任何人在嘗試調整此項目以供自己使用時可能遇到的任何問題。
以上是使用 Django 和 Vue.js 在 IRIS 上建立 Web 應用程式:深入了解 Django 框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!