Python學習筆記--Django的安裝和簡單使用(一)

一.簡介

  • Django 是一個用于構建 Web 應用程序的高級 Python Web 框架。
  • Django 提供了一套強大的工具和約定,使得開發者能夠快速構建功能齊全且易于維護的網站。
  • Django 遵守 BSD 版權,初次發布于 2005 年 7 月, 并于 2008 年 9 月發布了第一個正式版本 1.0 。
  • Django 采用了 MVT 的軟件設計模式,即模型(Model),視圖(View)和模板(Template)。

二.Django與Python版本對應關系

Django 與 Python 版本兼容表

Django 版本Python 版本要求備注
Django 5.0Python 3.10, 3.11, 3.12最新穩定版(2024年發布)
Django 4.2 LTSPython 3.8, 3.9, 3.10, 3.11長期支持版(支持到 2026年4月)
Django 4.1Python 3.8, 3.9, 3.10已結束維護(EOL)
Django 4.0Python 3.8, 3.9, 3.10已結束維護(EOL)
Django 3.2 LTSPython 3.6, 3.7, 3.8, 3.9, 3.10長期支持版(支持到 2024年4月)
Django 3.1Python 3.6, 3.7, 3.8, 3.9已結束維護(EOL)
Django 3.0Python 3.6, 3.7, 3.8已結束維護(EOL)
Django 2.2 LTSPython 3.5, 3.6, 3.7, 3.8已結束維護(2022年4月)

關鍵說明

  1. LTS 版本(長期支持版):

    • 推薦生產環境使用,提供?3年?安全更新(如 Django 4.2、3.2)。

    • 非 LTS 版本僅維護到下一個版本發布(通常 8個月)。

  2. Python 版本建議

    • 新項目建議使用?Python 3.10+?+?Django 4.2/5.0

    • 舊項目維護可參考 LTS 版本(如 Django 3.2 + Python 3.8)。

  3. 數據庫兼容性

    • Django 5.0 移除了對 PostgreSQL 11、MySQL 5.7 等舊數據庫的支持。

如何選擇?

  • 學習/新項目?→ Django 5.0 + Python 3.12

  • 企業生產環境?→ Django 4.2 LTS + Python 3.10/3.11

  • 兼容舊系統?→ Django 3.2 LTS + Python 3.8

三.安裝

安裝前最好檢查版本兼容性,對照上面的表格,選擇與本地python版本匹配的Django版本

查看已安裝的 Python 版本:

python --version
# 或
python3 --version

?

安裝指定版本的 Django,若未指定,則安裝最新版本

pip install django==4.2.6  # 例如安裝 Django 4.2 LTS

?未指定版本安裝

?驗證安裝

 python -m django --version

?出現下圖的提示則表明安裝成功

?四.使用

安裝 Django 之后,就有了可用的管理工具?django-admin,Windows 如果沒有配置環境變量可以用?django-admin創建項目

 django-admin startproject hello_django

創建完成后的項目結構

目錄說明:

  • hello_django:?項目的容器。
  • manage.py:?一個實用的命令行工具,可讓你以各種方式與該 Django 項目進行交互。
  • hello_django/__init__.py:?一個空文件,告訴 Python 該目錄是一個 Python 包。
  • hello_django/asgi.py:?一個 ASGI 兼容的 Web 服務器的入口,以便運行你的項目。
  • hello_django/settings.py:?該 Django 項目的設置/配置。
  • hello_django/urls.py:?該 Django 項目的 URL 聲明; 一份由 Django 驅動的網站"目錄"。
  • hello_django/wsgi.py:?一個 WSGI 兼容的 Web 服務器的入口,以便運行你的項目。

接下來我們進入 hello_django目錄輸入以下命令,啟動服務器:

 python manage.py runserver 0.0.0.0:8000

?

0.0.0.0 讓其它電腦可連接到開發服務器,8000 為端口號。如果不說明,那么端口號默認為 8000。

在瀏覽器輸入服務器的 ip(這里我們輸入本機 IP 地址:?127.0.0.1:8000) 及端口號,如果正常啟動,就會出現Django的歡迎頁面。

視圖和 URL 配置

在上面創建的 hello_django 目錄下的 hello_django目錄新建一個 views.py 文件,

并輸入下面的代碼:

from django.http import HttpResponsedef hello(request):return HttpResponse("Hello Django! ")

?接著,綁定 URL 與視圖函數。打開 urls.py 文件,刪除原來代碼,將以下代碼復制粘貼到 urls.py 文件中:

from django.urls import pathfrom . import viewsurlpatterns = [path("", views.hello),
]

?刷新瀏覽器

我們還可以修改以下path中路徑:

from django.urls import pathfrom . import viewsurlpatterns = [path("hello/", views.hello),
]

注意:項目中如果代碼有改動,服務器會自動監測代碼的改動并自動重新載入,所以如果你已經啟動了服務器則不需手動重啟。

path() 函數

Django path() 可以接收四個參數,分別是兩個必選參數:route、view 和兩個可選參數:kwargs、name。

語法格式:

path(route, view, kwargs=None, name=None)
  • route:?字符串,定義 URL 的路徑部分。可以包含變量,例如?<int:my_variable>,以從 URL 中捕獲參數并將其傳遞給視圖函數。

  • view:?視圖函數,處理與給定路由匹配的請求。可以是一個函數或一個基于類的視圖。

  • kwargs(可選):?一個字典,包含傳遞給視圖函數的額外關鍵字參數。

  • name(可選):?為 URL 路由指定一個唯一的名稱,以便在代碼的其他地方引用它。這對于在模板中生成 URL 或在代碼中進行重定向等操作非常有用。

Django 模板

在 hello_django目錄底下創建 templates 目錄并建立 demo.html文件, templates 目錄要與manage.py文件平級

demo.html寫入下面的代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>{{ hello }}</h1><p>Welcome to my website!</p>
</body>
</html>

在<h1>標簽中使用了雙括號表示變量

接下來我們需要向Django說明模板文件的路徑,修改hello_djang/settings.py,修改 TEMPLATES 中的 DIRS 為?[os.path.join(BASE_DIR, 'templates')],如下所示:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]

?然后修改 views.py,增加一個新的對象,用于向模板提交數據:

from django.http import HttpResponse
from django.shortcuts import renderdef hello(request):return HttpResponse("Hello Django ! ")def template(request):context          = {}context["hello"] = "Hello Django"return render(request, "demo.html", context)

這里使用 render 來替代之前使用的 HttpResponse。render 還使用了一個字典 context 作為參數。

context 字典中元素的鍵值?hello?對應了模板中的變量?{{ hello }}。這樣我們就完成了使用模板來輸出數據,從而實現數據與視圖分離。然后訪問demo路徑

模板中變量,列表和字典的使用

項目結構:

在views.py文件中添加下面的代碼

# 模板中變量的使用
def template_var(request):var_name = "我是一個變量"return render(request, "var.html", {"name": var_name})# 模板中列表的使用
def template_list(request):views_list = ["django1","django2","django3"]return render(request, "list.html", {"views_list": views_list})# 模板中字典的使用
def views_dict(request):views_dict = {"name":"Tom", "age":12}return render(request, "dict.html", {"views_dict": views_dict})

在urls.py中添加下面的代碼:

# 變量路徑的定義
# urlpatterns = [
#     path("var/", views.template_var, name="template_var"),
# ]# 列表路徑的定義# urlpatterns = [
#     path("list/", views.template_list, name="template_list"),
# ]# 字典路徑的定義urlpatterns = [path("dict/", views.views_dict, name="views_dict"),
]

?html中代碼,通過點操作符獲取列表和字典中的元素:

# 變量
<h1>{{ name }}</h1># 列表
<p>{{ views_list }}</p>
<p>{{ views_list.0 }}</p># 字典
<p>{{ views_dict }}</p>
<p>{{ views_dict.name }}</p>
<p>{{ views_dict.age }}</p>

?瀏覽器訪問效果:

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

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

相關文章

《汽車噪聲控制》復習重點

題型 選擇 填空 分析 計算 第一章 噪聲定義 不需要的聲音&#xff0c;妨礙正常工作、學習、生活&#xff0c;危害身體健康的聲音&#xff0c;統稱為噪聲 噪聲污染 與大氣污染、水污染并稱現代社會三大公害 聲波基本概念 定義 媒質質點的機械振動由近及遠傳播&am…

冒泡排序的原理

冒泡排序是一種簡單的排序算法&#xff0c;它通過重復地遍歷待排序的列表&#xff0c;比較相鄰的元素并交換它們的位置來實現排序。具體原理如下&#xff1a; 冒泡排序的基本思想 冒泡排序的核心思想是通過相鄰元素的比較和交換&#xff0c;將較大的元素逐步“冒泡”到列表的…

前端npm包發布流程:從準備到上線的完整指南

無論是使用第三方庫還是創建和分享自己的工具&#xff0c;npm都為我們提供了一個強大而便捷的平臺&#xff0c;然而很多開發者在將自己的代碼發布到npm上時往往面臨各種困惑和挑戰&#xff0c;本篇文章將從準備工作到發布上線&#xff0c;探討如何讓npm包更易發布及避免常見的坑…

使用 CDN 在國內加載本地 PDF 文件并處理批注:PDF.js 5.x 實戰指南

PDF.js 是一個強大的開源 JavaScript 庫&#xff0c;用于在 Web 瀏覽器中渲染 PDF 文件。它由 Mozilla 開發&#xff0c;能夠將 PDF 文檔繪制到 HTML5 Canvas 或 SVG 上&#xff0c;無需任何本機代碼或瀏覽器插件。對于許多需要在網頁中展示 PDF 內容的應用場景來說&#xff0c…

網絡化:DevOps 工程的必要基礎(Networking: The Essential Foundation for DevOps Engineering)

李升偉 編譯 理解網絡化基礎知識 你是否曾想過是什么真正讓卓越的DevOps工程師與眾人區別開來&#xff1f;答案是網絡化。是的&#xff0c;對網絡的基本理解不僅僅是有幫助的——它是絕對必要的。在當今以微服務、容器和分布式系統為主宰的互聯互通世界中&#xff0c;對網絡原…

C++基本知識 —— 缺省參數·函數重載·引用

C基本知識 —— 缺省參數函數重載引用 1. 缺省參數2. 函數重載3. 引用3.1 引用的基礎知識3.2 引用的作用3.3 const 引用3.4 指針與引用的關系 1. 缺省參數 什么是缺省參數&#xff1f;缺省參數是聲明或定義函數時為函數的參數指定一個缺省值。在調用該函數的時候&#xff0c;如…

Rust 官方文檔:人話版翻譯指南

鑒于大部分翻譯文檔都不太會說人話&#xff0c;本專欄主要內容為 rust 程序設計語言、rust 參考手冊、std 庫 等官方文檔的中譯中。

FlySecAgent:——MCP全自動AI Agent的實戰利器

最近&#xff0c;出于對人工智能在網絡安全領域應用潛力的濃厚興趣&#xff0c;我利用閑暇時間進行了深入研究&#xff0c;并成功開發了一款小型輕量化的AI Agent安全客戶端FlySecAgent。 什么是 FlySecAgent&#xff1f; 這是一個基于大語言模型和MCP&#xff08;Model-Contr…

實戰項目5(08)

目錄 任務場景一 【r1配置】 【r2配置】 【r3配置】 ???????任務場景二 【r1配置】 【r2配置】 ???????任務場景一 按照下圖完成網絡拓撲搭建和配置 任務要求&#xff1a; 通過在路由器R1、R2和R3上配置靜態路由&#xff0c;實現網絡中各終端PC能夠正常…

基于Kubernetes的Apache Pulsar云原生架構解析與集群部署指南(下)

文章目錄 k8s安裝部署Pulsar集群前期準備版本要求 安裝 Pulsar Helm chart管理pulsarClustersBrokersTopic k8s安裝部署Pulsar集群 前期準備 版本要求 Kubernetes 集群&#xff0c;版本 1.14 或更高版本Helm v3&#xff08;3.0.2 或更高版本&#xff09;數據持久化&#xff…

C35-數組和函數開發初見

一 數組作為函數的參數 用于傳遞數組中的某一個元素→意義不大 數組名當做函數實際參數 示例 代碼 #include <stdio.h>//封裝函數PrintArr void PrintArr(int arr[3]){int i;for(i0;i<3;i){printf("%d ",arr[i]);}putchar(\n);}//主函數 int main() { …

【小沐學GIS】基于C++繪制二維瓦片地圖2D Map(QT、OpenGL、GIS)

&#x1f37a;三維數字地球系列相關文章如下&#x1f37a;&#xff1a;1【小沐學GIS】基于C繪制三維數字地球Earth&#xff08;OpenGL、glfw、glut&#xff09;第一期2【小沐學GIS】基于C繪制三維數字地球Earth&#xff08;OpenGL、glfw、glut、GIS&#xff09;第二期3【小沐學…

idea左側項目資源管理器不見了處理

使用idea誤觸導致&#xff0c;側邊欄和功能欄沒了&#xff0c;如何打開&#xff1f; 1.打開文件&#xff08;File&#xff09; 2. 打開設置&#xff08;Settings&#xff09; 3.選擇Appearance&Behavior--->Appearance劃到最下面&#xff0c;開啟顯示工具欄和左側并排布…

[Java實戰]Spring Boot 靜態資源配置(十三)

[Java實戰]Spring Boot 靜態資源配置&#xff08;十三&#xff09; 引言 靜態資源&#xff08;如 HTML、CSS、JavaScript、圖片等&#xff09;是 Web 應用的基石。Spring Boot 通過自動化配置簡化了靜態資源管理&#xff0c;但面對復雜場景&#xff08;如多模塊項目、CDN 集成…

多模態大語言模型arxiv論文略讀(六十九)

Prompt-Aware Adapter: Towards Learning Adaptive Visual Tokens for Multimodal Large Language Models ?? 論文標題&#xff1a;Prompt-Aware Adapter: Towards Learning Adaptive Visual Tokens for Multimodal Large Language Models ?? 論文作者&#xff1a;Yue Zha…

Python 基礎語法與數據類型(七) - 函數的定義與調用 (def, return)

文章目錄 為什么要使用函數&#xff1f;函數的定義 (def)函數的調用函數參數 (Parameters vs Arguments)返回值 (return)變量作用域 (簡要了解)總結練習題練習題答案 **創作不易&#xff0c;請大家點贊加收藏&#xff0c;關注我&#xff0c;持續更新教程&#xff01;** 到目前為…

華為配置篇-RSTP/MSTP實驗

MSTP 一、簡介二、常用命令總結三、實驗 一、簡介 RSTP&#xff08;快速生成樹協議&#xff09;? RSTP&#xff08;Rapid Spanning Tree Protocol&#xff09;是 STP 的改進版本&#xff0c;基于 ??IEEE 802.1w 標準??&#xff0c;核心目標是解決傳統 STP 收斂速度慢的問…

Docker Compose 完全指南:從入門到生產實踐

Docker Compose 完全指南&#xff1a;從入門到生產實踐 1. Docker Compose 簡介與核心價值 Docker Compose 是一個用于定義和運行多容器 Docker 應用程序的工具。通過一個 YAML 文件來配置應用的服務&#xff0c;只需簡單命令就能創建和啟動所有服務。 核心優勢&#xff1a;…

Linux 離線安裝 Docker 和 Docker Compose 最新版 的完整指南

一、準備工作 1. 下載安裝包?&#xff08;需在有網絡的機器操作&#xff09;&#xff1a; Docker 引擎&#xff1a;從官方倉庫下載最新二進制包 wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz?Docker Compose&#xff1a;下載最新二進制…

CSS: 選擇器與三大特性

標簽選擇器 標簽選擇器就是選擇一些HTML的不同標簽&#xff0c;由于它們的標簽需求不同&#xff0c;所以CSS需要設置標簽去選擇它們&#xff0c;為滿足它們的需求給予對應的屬性 基礎選擇器 標簽選擇器 <!DOCTYPE html> <head><title>HOME</title>…