Django 入門詳解:從零開始構建你的第一個 Web 應用

Django 是一個高級的 Python Web 框架,鼓勵快速開發和干凈、實用的設計。它遵循“不要重復造輪子(Don't Repeat Yourself, DRY)”的原則,內置了諸如用戶認證、內容管理、表單處理等常見功能,非常適合構建內容驅動的網站。

本文將帶你從零開始,逐步了解 Django 的基本概念、項目結構、視圖、模板、模型、路由等核心內容,并通過一個簡單的博客應用示例,幫助你快速上手 Django 開發。


一、Django 簡介

1. 什么是 Django?

Django 是一個由 Python 編寫的開源 Web 框架,采用 MTV(Model-Template-View) 架構模式:

  • Model(模型):負責與數據庫交互,定義數據結構。
  • Template(模板):負責展示層,即 HTML 頁面。
  • View(視圖):處理業務邏輯,決定將哪些數據展示給模板。

2. Django 的特點

  • 快速開發:內置大量實用功能,減少重復開發。
  • 安全性強:自動防御常見的安全漏洞(如 XSS、CSRF)。
  • 可擴展性高:支持多數據庫、緩存、中間件等高級功能。
  • 社區活躍:擁有龐大的社區和豐富的第三方庫。

二、安裝 Django

1. 安裝 Python 環境

確保你已安裝 Python 3.8+,可以通過以下命令檢查:

python --version

2. 創建虛擬環境(推薦)

python -m venv venv
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate     # Windows

也可以使用conda

3. 安裝 Django

pip install django

驗證是否安裝成功:

python -m django --version

三、創建你的第一個 Django 項目

1. 創建項目

django-admin startproject mysite
cd mysite

目錄結構如下:

mysite/
├── manage.py
└── mysite/├── __init__.py├── settings.py├── urls.py└── wsgi.py

2. 啟動開發服務器

python manage.py runserver

訪問 http://127.0.0.1:8000/,看到 Django 的歡迎頁面表示項目創建成功。


四、創建第一個應用(App)

Django 鼓勵將功能模塊化,一個項目可以包含多個應用(App)。

1. 創建應用

python manage.py startapp blog

目錄結構如下:

blog/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py

2. 注冊應用

打開 mysite/settings.py,在 INSTALLED_APPS 中添加:

INSTALLED_APPS = [...'blog',
]

五、編寫第一個視圖(View)

blog/views.py 中添加:

from django.http import HttpResponsedef index(request):return HttpResponse("歡迎來到我的博客!")

配置 URL 路由

  1. blog 目錄下創建 urls.py
# blog/urls.py
from django.urls import path
from . import viewsurlpatterns = [path('', views.index, name='index'),
]
  1. 在主項目的 urls.py 中包含:
# mysite/urls.py
from django.urls import include, pathurlpatterns = [path('blog/', include('blog.urls')),
]

現在訪問 http://127.0.0.1:8000/blog/,你會看到頁面顯示“歡迎來到我的博客!”。


六、使用模板(Template)

1. 創建模板目錄

blog 應用下創建 templates/blog/ 目錄:

blog/
└── templates/└── blog/└── index.html

index.html 中寫入:

<!DOCTYPE html>
<html><head><title>我的博客</title></head><body><h1>歡迎來到我的博客!</h1></body>
</html>

2. 修改視圖使用模板

# blog/views.py
from django.shortcuts import renderdef index(request):return render(request, 'blog/index.html')

刷新頁面,你會看到渲染后的 HTML 頁面。


七、使用模型(Model)管理數據

1. 定義模型

blog/models.py 中定義一個博客文章模型:

from django.db import modelsclass Post(models.Model):title = models.CharField(max_length=200)content = models.TextField()pub_date = models.DateTimeField(auto_now_add=True)def __str__(self):return self.title

2. 生成遷移文件

bash深色版本python manage.py makemigrations

3. 應用遷移

python manage.py migrate

4. 注冊模型到 Admin

blog/admin.py 中注冊模型:

from django.contrib import admin
from .models import Postadmin.site.register(Post)

5. 創建超級用戶

python manage.py createsuperuser

登錄 http://127.0.0.1:8000/admin,你可以添加、編輯、刪除博客文章。


八、展示數據庫中的數據

1. 修改視圖,展示所有文章

def index(request):posts = Post.objects.all()return render(request, 'blog/index.html', {'posts': posts})

2. 修改模板,顯示文章列表

<!-- blog/index.html -->
<h1>我的博客</h1>
<ul>{% for post in posts %}<li>{{ post.title }} - {{ post.pub_date }}</li>{% endfor %}
</ul>

九、總結

通過本文,你已經完成以下內容:

  • 創建了一個 Django 項目和應用
  • 編寫了第一個視圖并配置了 URL 路由
  • 使用模板渲染 HTML 頁面
  • 定義模型并與數據庫交互
  • 使用 Admin 管理后臺
  • 查詢并展示數據庫中的數據

這只是 Django 的冰山一角。接下來可以學習:

  • 表單處理(Form)
  • 用戶認證(Authentication)
  • REST API(使用 Django REST Framework)
  • 部署到生產環境(如 Nginx + Gunicorn)

十、推薦學習路徑

  1. 官方文檔:Django documentation | Django documentation | Django
  2. 推薦書籍:
    • 《Django for Beginners》
    • 《Django for APIs》
  1. 推薦項目練習:
    • 博客系統
    • 任務管理系統
    • 電商網站

附錄:常用命令匯總

命令

說明

django-admin startproject

創建項目

python manage.py startapp

創建應用

python manage.py runserver

啟動開發服務器

python manage.py makemigrations

生成遷移文件

python manage.py migrate

應用遷移

python manage.py createsuperuser

創建管理員用戶

python manage.py shell

進入 Django Shell

python manage.py test

運行測試

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

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

相關文章

[3-02-02].第04節:開發應用 - RequestMapping注解的屬性2

SpringMVC學習大綱 注解的源碼&#xff1a; 三、注解的params屬性 3.1.params屬性的理解&#xff1a; params屬性用來通過設置請求參數來映射請求。對于RequestMapping注解來說&#xff1a; params屬性也是一個數組&#xff0c;不過要求請求參數必須和params數組中要求的所有…

layui表格多選及選中

多選獲取選中數據//獲取選中行數據 var tbData table.cache["tablist2"]; var chkDatas tbData.filter(s > s.LAY_CHECKED true); if (vm.isEmpty(chkDatas) || chkDatas.length 0) {os.error("未選中數據&#xff01;");return; }單選選中樣式及數…

卡爾曼濾波數據融合

狀態向量&#xff1a;位置和速度 [x, y, vx, vy]預測階段&#xff1a;用加速度估算速度和位置&#xff08;IMU數據&#xff09;更新階段&#xff1a;用 GPS 位置修正漂移&#xff08;每隔一定時間才來一次&#xff09;import numpy as np# 時間步長&#xff08;秒&#xff09; …

Qwen3-8B 的 TTFT 性能分析:16K 與 32K 輸入 Prompt 的推算公式與底層原理詳解

一、模型概述與上下文支持能力Qwen3-8B 是通義實驗室推出的 80 億參數大語言模型&#xff0c;支持 32,768 token 的上下文長度 。其核心優化點包括&#xff1a;FP8 量化技術&#xff1a;通過將權重從 32-bit 壓縮至 8-bit&#xff0c;顯著降低顯存占用并提升推理效率&#xff0…

【Spring Cloud Gateway 實戰系列】基礎篇:路由、斷言、過濾器、負載均衡深度解析

一、引言在微服務架構中&#xff0c;API網關是流量的統一入口&#xff0c;承擔著路由轉發、流量管控、安全防護等核心職責。Spring Cloud Gateway作為Spring官方推薦的第二代網關&#xff0c;基于Spring 5.0、Spring Boot 2.0和Project Reactor構建&#xff0c;提供了高性能的響…

基于springboot的鄉村旅游在線服務系統/鄉村旅游網站

管理員&#xff1a;登錄&#xff0c;個人中心&#xff0c;用戶管理&#xff0c;景點類型管理&#xff0c;旅游景點管理&#xff0c; 酒店信息管理&#xff0c;旅游線路管理&#xff0c;門票預訂管理&#xff0c;酒店預訂管理&#xff0c;旅游攻略管理&#xff0c;社區互動&…

JavaWeb筆記12

登錄的問題&#xff1a;用戶兩次登錄后會生成新舊兩個令牌&#xff0c;此時舊的不應該生效要使舊的失效&#xff1a;令牌主動失效機制 登錄成功后&#xff0c;給瀏覽器響應令牌的同時&#xff0c;把該令牌存儲到redis中 LoginInterceptor攔截器中&#xff0c;需要驗證瀏覽器攜帶…

算法牢籠與思想飛地:在人工智能時代守衛靈魂的疆域

當手指在鍵盤上敲下“幫我寫一篇關于XX的文章”&#xff0c;當屏幕上的“智能助手”瞬間輸出結構完整、引經據典的文字&#xff0c;當算法為我們精準推送“你可能感興趣”的一切——我們正被一種前所未有的認知便利所包圍。然而&#xff0c;在這層包裹著效率與舒適的華麗外衣之…

WebAssembly瀏覽器指紋識別技術——實驗評估與應用展望(下篇)

引言 在上篇文章中,我們詳細闡述了基于WebAssembly的瀏覽器指紋識別技術的理論基礎和核心方法。本文將進一步展示該技術在實際應用中的表現,通過大規模的實驗驗證其有效性,并深入探討相應的防護策略。同時,我們也將客觀分析該技術的應用前景與潛在風險,為相關領域的研究和…

kafka--基礎知識點--5.4--max.in.flight.requests.per.connection

一、參數定義 max.in.flight.requests.per.connection 是 Kafka 生產者客戶端配置參數&#xff0c;用于控制生產者與單個 Broker 連接中未確認請求的最大數量。簡單來說&#xff0c;它限制了生產者在等待之前發送的消息確認&#xff08;ACK&#xff09;時&#xff0c;可以同時向…

【Spring AI 0基礎教程】1、基礎篇 環境搭建 - 智能天氣預報助手

基礎篇 | 環境搭建 - 智能天氣預報助手 一、什么是 Spring AI Spring AI (https://spring.io/projects/spring-ai)]是 Spring 官方于 2023 年推出的 AI 應用開發框架&#xff0c;它如同 AI 世界的"Spring 生態連接器"&#xff0c;致力于簡化開發集成了 AI 功能的應…

深入淺出MyBatis緩存:如何讓數據庫交互飛起來

深入淺出MyBatis緩存&#xff1a;如何讓數據庫交互飛起來你是否遇到過這樣的場景&#xff1a;系統在高并發下響應緩慢&#xff0c;數據庫監控顯示CPU飆升&#xff0c;日志里充斥著大量重復SQL&#xff1f;作為開發者&#xff0c;我曾親眼目睹一個簡單的配置查詢拖垮整個系統。今…

【計算機考研(408)- 數據結構】緒論

緒論 基本概念&#xff08;理解即可&#xff09; 數據是信息的載體&#xff0c;是描述客觀事物屬性的數、字符及所有能輸入到計算機中并被計算機程序識別 和處理的符號的集合。數據是計算機程序加工的原料。&#xff08;For Example : 聲音/圖像/字符串等&#xff09; 數據元…

嵌入式學習-土堆PyTorch(9)-day25

進入尾聲&#xff0c;一個完整的模型訓練 &#xff0c;點亮的第一個led#自己注釋版 import torch import torchvision.datasets from torch import nn from torch.utils.tensorboard import SummaryWriter import time # from model import * from torch.utils.data import Dat…

Java變量詳解:局部變量、成員變量、類變量區別及使用場景

作為Java開發者&#xff0c;深入理解不同變量的特性是寫出高質量代碼的基礎。本文將為你全面解析三種核心變量類型&#xff0c;并通過實戰案例展示它們的正確使用方式。一、變量類型概覽 1. 局部變量&#xff08;Local Variable&#xff09; 定義&#xff1a;在方法、構造方法或…

【收集電腦信息】collect_info.sh

收集電腦信息 collect_info.sh #!/bin/bashoutput"info.txt" > "$output"# 1. OS Version echo " 操作系統名稱及版本 " >> "$output" lsb_release -d | cut -f2- >> "$output" echo -e "\n" >…

服務器清理空間--主要是conda環境清理和刪除

1.查看空間情況 (base) zhouy24RL-DSlab:~/zhouy24Files$ df -h Filesystem Size Used Avail Use% Mounted on udev 252G 0 252G 0% /dev tmpfs 51G 4.9M 51G 1% /run /dev/nvme0n1p3 1.9T 1.7T 42G 98% / tmpfs 252G …

UE5多人MOBA+GAS 26、為角色添加每秒回血回藍(番外:添加到UI上)

文章目錄添加生命值和藍量的狀態標簽創建無限GE并應用監聽添加和去除標簽每秒回復配上UI添加生命值和藍量的狀態標簽 添加新的標簽 CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Stats_Health_Full)CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Stats_Health_Empty)CRUNCH_API U…

MetaGPT源碼剖析(三):多智能體系統的 “智能角色“ 核心實現——Role類

每一篇文章都短小精悍&#xff0c;不啰嗦。今天我們來深入剖析Role類的代碼實現。在多智能體協作系統中&#xff0c;Role&#xff08;角色&#xff09;就像現實世界中的 "員工"&#xff0c;是執行具體任務、參與協作的基本單位。這段代碼是 MetaGPT 框架的核心&#…

【項目經驗】小智ai MCP學習筆記

理論 1、什么是MCP MCP(Model Context Protocol&#xff0c;模型上下文協議)是一種開放式協議&#xff0c;它實現了LLM與各種工具的調用。使LLM從對話、生成式AI變成了擁有調用三方工具的AI。用官方的比喻&#xff0c;MCP就是USB-C接口&#xff0c;只要實現了這個接口&#x…