Django 從環境搭建到第一個項目

作為一名剛接觸 Django 的開發者,我在學習過程中整理了這份入門筆記,涵蓋 Django 框架基礎、環境搭建、第一個項目創建以及核心配置,希望能為同樣剛入門的小伙伴提供清晰的學習思路。

一、Django 框架基礎認知

在開始實際操作前,先對 Django 框架有個基礎了解,能讓后續學習更順暢。

Django 遵循 MTV(模型 - 模板 - 視圖)架構,這是從 MVC(模型 - 視圖 - 控制器)模式演變而來,各組件功能明確:

1.1 什么是 Django

Django 是一款高級 Python Web 開源框架,發音為d???g??。它由經驗豐富的開發人員構建,解決了 Web 開發中諸多常見問題,能讓開發者專注于應用程序編寫,無需 “重復造輪子”。近年來,隨著 Python 地位的上升,Django 發展迅猛,版本更新迭代快。截至目前,最新版本是 5.2.5 LTS,官方規劃未來兩年將更新到 6.0 LTS 版本。

1.2 Django 的 MTV 架構

  • 模型(Model):處于 MTV 模式底層,是數據存取層。負責處理與數據相關的所有事務,比如數據的存取、數據有效性驗證以及數據間關系處理等,還能通過 ORM(對象關系映射)建立業務對象與數據庫的映射。
  • 模板(Template):位于 MTV 模式頂層,是表現層。負責處理與表現相關的操作,簡單來說就是決定數據如何在頁面或其他類型文檔中顯示,比如生成 HTML 頁面。
  • 視圖(View):處于 MTV 模式中間層,是業務邏輯層。負責存取模型以及調取合適模板的相關邏輯,是連接模型和模板的橋梁,僅負責選擇要展示的數據并傳遞到模板,不處理用戶輸入。
  • URL 分發器:雖未在 MTV 名稱中體現,但至關重要,相當于 MVC 模式中的控制器(Controller)。它使用正則表達式匹配 URL,將 URL 頁面請求分發給不同的視圖處理,再由視圖調用相應的模型和模板。

下面是一個簡化的表格,用于展示MVC(Model-View-Controller)、MVT(Model-View-Template)三種設計模式的主要區別

特性/設計模式

MVC(模型-視圖-控制器)

MVT(模型-視圖-模板)

主要目標

分離數據管理、業務邏輯與界面呈現。

通過清晰的分離關注點來簡化Web應用開發。

組件角色

- Model: 數據存取層。

- View: 用戶界面層。

- Controller: 接收用戶輸入并調用Model和View進行適當響應。

- Model: 數據存取層。

- View: 視圖層,負責展示邏輯。

- Template: 定義了如何將數據渲染到HTML頁面上。

數據流動

用戶交互 -> Controller -> Model -> View

用戶交互 -> View -> Model -> Template

適用場景

適用于需要復雜用戶交互的應用程序。

主要用于Web開發,尤其是Django框架中。

優點

提供良好的分離關注點,便于代碼維護。

簡化Web應用開發流程,易于理解。

缺點

可能導致過多的事件監聽器和回調函數。

相比MVC,靈活性較低,特別是在非Web上下文中。

MVC和MVT的圖示:

①MVC圖示:

②MVT圖示:

1.3 Django 的核心特點

Django 能成為流行的 Web 框架,離不開其強大的特點:

  • 全功能框架:提供從數據庫到模板的完整解決方案,無需額外整合大量第三方工具。
  • ORM 系統:強大的對象關系映射功能,簡化數據庫操作,開發者無需編寫復雜的 SQL 語句,用 Python 代碼就能操作數據庫。
  • 自動化管理后臺:可自動生成管理界面,方便對網站內容進行管理,大大減少后臺開發工作量。
  • 靈活路由系統:支持靈活的 URL 配置,能輕松實現 URL 與視圖的映射。
  • 強大模板系統:擁有強大的模板引擎,支持模板繼承,便于實現頁面風格統一和代碼復用。
  • 便捷表單處理:簡化表單的創建和驗證流程,降低表單開發難度。
  • 內置認證系統:提供內置的用戶認證和權限管理功能,保障網站安全。
  • 全面安全特性:能有效防止 SQL 注入、XSS(跨站腳本)、CSRF(跨站請求偽造)等常見網絡攻擊。
  • 國際化支持:內置多語言支持,便于開發多語言版本的網站。
  • 實用緩存框架:支持多種緩存后端,可提高網站訪問速度,減輕服務器壓力。

二、創建第一個 Django 項目(兩種方式)

安裝好開發環境后,就可以創建第一個 Django 項目了,這里介紹兩種常用的創建方式:通過命令行和通過 PyCharm。

2.1 安裝 Django 框架

完成上述準備工作后,就可以安裝 Django 框架了。

1.打開命令行,輸入以下命令安裝指定版本(5.2.5)的 Django:

python -m pip install Django==5.2.5

    2.安裝完成后,驗證是否安裝成功,輸入命令:

    django-admin --version

    如果能顯示 Django 的版本信息,說明 Django 安裝成功。

    安裝好開發環境后,就可以創建第一個 Django 項目了,這里介紹兩種常用的創建方式:通過命令行和通過 PyCharm。

    2.2? 通過命令行創建 Django 項目

    1. 創建項目目錄:首先在命令行中切換到想要存放項目的目錄,然后輸入以下命令創建一個名為 “django_project” 的項目目錄,并進入該目錄:

    mkdir django_project
    cd django_project

    2.創建虛擬環境:為了避免項目依賴沖突,建議為每個 Django 項目創建獨立的虛擬環境。輸入以下命令創建名為 “venv” 的虛擬環境:

    python -m venv venv

    什么是虛擬環境?

    venv 就是 Python 的“項目隔離罩”,讓你每個項目用自己的 Python 和依賴,干凈、可控、不打架

    3.激活虛擬環境

    • Windows 系統:
    venv\Scripts\activate

    • macOS/Linux 系統(主播的電腦是windows系統,所以這個就沒有演示了):
    source venv/bin/activate

    激活成功后,命令行提示符前會顯示 “(venv)”。

    4.?安裝 Django:雖然之前已經安裝過 Django,但為了確保虛擬環境中使用的是指定版本,可再次輸入安裝命令(若虛擬環境中已存在,會提示已安裝):

    pip install Django==5.2.5

    5.創建 Django 項目:輸入以下命令創建一個名為 “mysite” 的 Django 項目:

    django-admin startproject mysite

    6.進入項目目錄

    cd mysite

    7.運行開發服務器:輸入命令啟動 Django 開發服務器:

    python manage.py runserver

    啟動成功后,在瀏覽器中輸入 “http://127.0.0.1:8000/”,若能看到 Django 的默認歡迎頁面,說明項目創建并啟動成功。

    2.3??通過 PyCharm 創建 Django 項目

    1. 打開 PyCharm,點擊 “New Project”。
    2. 在彈出的窗口中,選擇 “Django” 選項,然后設置項目的名稱(如 “mysite”)和項目存放位置。
    3. 選擇 Python 解釋器,建議選擇之前創建的虛擬環境中的 Python 解釋器(若未創建,可在此時通過 “New environment” 選項創建)。
    4. 點擊 “Create” 按鈕,等待項目初始化完成。
    5. 項目初始化完成后,點擊 PyCharm 工具欄中的 “Run” 按鈕(或右鍵點擊項目中的 “manage.py” 文件,選擇 “Run 'manage.py runserver'”),啟動開發服務器。
    6. 同樣在瀏覽器中輸入 “http://127.0.0.1:8000/”,查看是否能正常顯示 Django 歡迎頁面。

    創建成功的目錄:

    三、兩種啟動項目的方式

    3.1 通過指令運行

    python manage.py runserver

    3.2 通過Pycharm工具運行

    runserver

    成啟動后打開http://127.0.0.1:8000/的頁面:

    四、總結

    當你按下 python manage.py runserver 的那一刻,本地回顯的 127.0.0.1:8000 不只是一個歡迎頁面,而是一把鑰匙

    • 它打開了 ORM 讓你用 Python 寫 SQL

    • 它鋪好了路由讓你隨心所欲定制 URL

    • 它準備好了 MTV 模式,等你把創意塞進模板里

    • 它暗裝了 admin 后臺,只等你一句 admin.site.register() 就讓數據庫秒變可視化

    今天,我們搭的是“毛坯房”;明天,就能用它長出用戶系統、RESTful API、WebSocket 聊天室、甚至一整個 SaaS。

    🎯 評論區立個 Flag 吧
    你打算在這個項目里加什么功能?
    是博客、商城、還是私藏已久的腦洞?
    留言打卡 + 點贊,過兩周我來圍觀:
    誰的 star 最多,我免費出下一篇《從 0 到上線:Django 部署全攻略》!

    如果這篇筆記幫你少踩了坑,點個 ?? 與收藏,把干貨轉給那個還在被“環境配置”勸退的伙伴。
    Django 的世界很大,我們一起把它跑通、玩爛、再重構!

    ????????????????????????????????????????????????????????????????????????????????????????????????????????—— 下次見,代碼里相逢。

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

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

    相關文章

    機器學習實操項目02——Pandas入門(基本操作、創建對象、查看數據、數據選擇、處理缺失數據、數據合并、數據分組、時間序列、繪圖、文件導出)

    上一章:機器學習實操項目01——Numpy入門(基本操作、數組形狀操作、復制與試圖、多種索引技巧、線性代數) 下一章: 機器學習核心知識點目錄:機器學習核心知識點目錄 機器學習實戰項目目錄:【從 0 到 1 落地…

    springboot超市貨品信息管理系統

    開發環境開發語言:Java 框架:springboot JDK版本:JDK1.8 服務器:tomcat7 數據庫:mysql 5.7(一定要5.7版本) 數據庫工具:Navicat11 開發軟件:eclipse/myeclipse/idea Mave…

    c# .net中using的使用

    using示例代碼 示例代碼1: using HttpContent httpContent new StringContent(postData, Encoding.UTF8);示例代碼2: using (var process Process.Start(info)) {output process.StandardOutput.ReadToEnd(); }示例代碼1寫法: using HttpC…

    STM32HAL 快速入門(二十):UART 中斷改進 —— 環形緩沖區解決數據丟失

    前言 大家好,這里是 Hello_Embed。上一篇我們用中斷方式實現了 UART 收發,但發現一個關鍵問題:若 CPU 在處理其他任務時未及時重新使能接收中斷,新數據會覆蓋舊數據,導致丟失。本篇的核心改進方案是 ——“中斷接收 環…

    使用Docker搭建MaxKB智能體平臺

    1、系統要求 詳見: https://maxkb.cn/docs/v2/quick_start https://maxkb.cn/docs/v2/installation/offline_installtion https://maxkb.cn/docs/v2/installation/online_installtion 2、安裝Docker 合集:Docker安裝與使用 3、安裝MaxKB 詳見&#xf…

    寵物電商痛點破解:智能客服的關鍵作用

    在寵物電商蓬勃發展的當下,行業面臨著諸多痛點。從客戶咨詢的高頻率到訂單處理的復雜性,每一個環節都可能成為制約發展的瓶頸。而智能客服的出現,為這些痛點提供了有效的解決方案,成為寵物電商行業不可或缺的助力。一、寵物電商的…

    基于GraphRAG+Ollama驗證知識圖譜和檢索增強融合

    之前介紹了知識圖譜與檢索增強的融合探索GraphRAG。 https://blog.csdn.net/liliang199/article/details/151189579 這里嘗試在CPU環境,基于GraphRAGOllama,驗證GraphRAG構建知識圖譜和檢索增強查詢過程。 1 環境安裝 1.1 GraphRAG安裝 在本地cpu環境…

    36頁可編輯PPT | 某制造集團燈塔工廠解決方案

    制造業企業訂單種類多,傳統產線換型慢,庫存高,財務壓力大。工人年齡大,招工難,工資漲,效率低。海外對手用低價和柔性產線搶單,國內同行用數字化縮短交期。企業想擴產,又怕投資重、回…

    Redis 非緩存核心場景及實例說明

    Redis 非緩存核心場景及實例說明 一、分布式鎖 分布式鎖用于解決分布式系統中多節點競爭同一資源的問題,確保操作原子性。Redis 實現分布式鎖的核心思路是利用鍵的唯一性和原子命令,通常基于 Redisson 框架簡化實現(底層依賴 Redis 命令&…

    【技術教程】如何將ONLYOFFICE文檔集成到使用Spring Boot框架編寫的Java Web應用程序中

    在現代協作辦公環境中,將功能強大的文檔編輯器無縫集成到自有業務系統中,已成為提升工作效率和用戶體驗的關鍵需求。ONLYOFFICE 文檔服務器提供了一套成熟的在線文檔編輯解決方案,而 Java Spring Boot 則是構建高效、模塊化 Web 應用的熱門框…

    openharmony之AV_CodeC音視頻編解碼模塊詳解(二)

    1. 音頻解碼器函數調用流程 1.1 音頻解碼器架構概覽 decoder:解碼器 encoder:編碼器 前面文章介紹了關于openHarmony的AV_CodeC模塊,這篇文章將詳細講解編解碼時函數的調用流程 音頻解碼器采用插件化架構,核心實現位于: services/engine/codec/audio/decoder/audio_ffmpeg…

    PDF24 Creator:免費的多功能PDF工具

    在處理PDF文件時,一個功能強大且免費的PDF工具是許多用戶的首選。PDF24 Creator作為一款免費的PDF工具,提供了豐富的功能,幫助用戶創建、編輯和轉換PDF文件,滿足從初學者到專業用戶的各種需求。它不僅支持PDF與Word、Excel等15種以…

    VBA 中使用 ADODB 操作 SQLite 插入中文亂碼問題

    問題 使用 VBA 的 ADODB 對象的 command 對象、parameter 對象,插入的中文數據為亂碼 驅動下載、安裝、引用 驅動網址(下載路徑) 使用的 ODBC 驅動(需要梯子才能下載,感謝大佬開源) http://www.ch-werner.de/sqliteodbc/ 版本…

    執行select * from a where rownum<1;,數據庫子進程崩潰,業務中斷。

    文章目錄環境癥狀觸發條件解決方案環境 系統平臺&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5.2 癥狀 執行select * from a where rownum<1;&#xff0c;數據庫子進程崩潰&#xff0c;業務中斷。 觸發條件 select 和 where條件帶有rownum…

    python庫 Py2app 的詳細使用(將 Python 腳本變為 MacOS 獨立軟件包)

    更多內容請見: python3案例和總結-專欄介紹和目錄 文章目錄 一、Py2app 概述 1.1 Py2app 介紹 1.2 安裝 1.3 替代工具推薦 二、基礎使用 2.1 最簡單的 setup.py 文件 2.2 完整示例 2.3 配置選項詳解 2.4 完整項目案例 2.5 打包為單文件應用(可選) 三、高級配置 3.1 處理特定…

    NTP配置為客戶端廣播監聽模式

    前言 項目需求&#xff1a; 使能ntp為客戶端模式&#xff0c;能監服務端廣播模式發出的ntp報文&#xff0c;計算出服務端的時間與客戶端的時間偏差并上報。 開發狀況&#xff1a; 交叉編譯ntp源碼&#xff0c;將修改后的ntpd進程部署到設備上作為客戶端完成項目需求 如何操作&a…

    Claude-Flow 使用指南

    Claude-Flow 不僅僅是一個工具&#xff0c;更是一個強大的AI驅動開發編排平臺。本問初步帶您深入了解 Claude-Flow v2.0.0 Alpha 的強大功能&#xff0c;助您在AI開發領域如虎添翼。1. 簡介&#xff1a;什么是 Claude-Flow&#xff1f; Claude-Flow v2 Alpha 是一個企業級的AI編…

    系統梳理 Test-Time Compute 的主要實現路徑

    編者按&#xff1a; AI 真的在“思考”嗎&#xff1f;當模型面對數學推理、代碼生成或復雜決策時&#xff0c;它是如何一步步推演出答案的&#xff1f;如果你曾困惑于大模型在關鍵任務中表現不穩定、缺乏可解釋性&#xff0c;甚至生成結果難以驗證&#xff0c;那么你并不孤單。…

    vue 經常寫的echarts圖表模塊結構抽取

    vue 經常寫的echarts圖表模塊結構抽取將項目中經常寫的結構抽取一下, 方便以后用 表頭包含標題和右側操作部分下面為圖表 <div class"chartBox"><div class"chartheadbox"><div class"chartheadleft">這是圖表標題</div>…

    主流的開源協議(MIT,Apache,GPL v2/v3)

    文章目錄1. MIT 協議 (MIT License)2. Apache 2.0 協議 (Apache License 2.0)3. GPL v2 協議 (GNU General Public License v2)“開源協議選擇指南”的流程圖 flowchart TDA[開始選擇開源協議] --> B{是否要求修改后必須開源?<br>(是否具有 傳染性?)};B -- 是&…