day35-Django(1)

day35-Django 3.2

前言

之前我們介紹過web應用程序和http協議,簡單了解過web開發的概念。Web應用程序的本質

  1. 接收并解析HTTP請求,獲取具體的請求信息
  2. 處理本次HTTP請求,即完成本次請求的業務邏輯處理
  3. 構造并返回處理結果——HTTP響應
import socketserver = socket.socket()
server.bind(('127.0.0.1', 8080))
server.listen(5)while True:conn, addr = server.accept()data = conn.recv(1024)print("data:\n",data)# 路徑解析request_path = data.decode('utf-8').split('\r\n')[0].split(' ')[1]if request_path == '/':with open("index.html", "rb") as f:data = f.read()conn.send(b'HTTP/1.1 200 OK\r\n\r\n' + data)elif request_path == '/timer':with open("login.html", "rb") as f:data = f.read()conn.send(b'HTTP/1.1 200 OK\r\n\r\n' + data)else:with open("notFound.html", "rb") as f:data = f.read()conn.send(b'HTTP/1.1 404 Not Found\r\n\r\n' + data)

那么什么是web框架呢?

Web應用框架有助于減輕網頁開發時共通性活動的工作負荷,例如許多框架提供數據庫訪問接口、標準樣板以及會話管理等,可提升代碼的可再用性。

說簡單點就是web框架用于搭建Web應用程序,免去不同Web應用相同代碼部分的重復。

一、Django介紹

在這里插入圖片描述

Python下有許多款不同的 Web 框架。Django是重量級選手中最有代表性的一位。許多成功的網站和APP都基于Django。Django 是一個開放源代碼的 Web 應用框架,由 Python 寫成。Django 遵守 BSD 版權,初次發布于 2005 年 7 月, 并于 2008 年 9 月發布了第一個正式版本 1.0 。

在這里插入圖片描述

Django文檔

Django 采用了 MVT 的軟件設計模式,即模型(Model),視圖(View)和模板(Template)。

這個MVT模式并非django首創,在其他的語言里面也有類似的設計模式MVC,甚至可以說django里面的MVT事實上是借鑒了MVC模式衍生出來的。

M,Model,模型,是用于完成操作數據庫的。

V,View,視圖,里面的代碼就是用于展示給客戶端的頁面效果。

C,Controller,控制器,是一個類或者函數,里面的代碼就是用于項目功能邏輯的,一般用于調用模型來獲取數據,獲取到的數據通過調用視圖文件返回給客戶端。

而MVT指的是:

  1. M全拼為Model,與MVC中的M功能相同,負責和數據庫交互,進行數據處理。
  2. V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回應答。
  3. T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。

MVT模型的工作流程

在這里插入圖片描述

路由控制器將請求轉發給對應的視圖函數,完成業務邏輯,視圖函數將從model中獲取的數據嵌入到template的中模板文件(html)渲染成一個頁面字符串,返回給客戶端的流程。

所以我們學習Django重點是四個部分:url路由器+MVT

二、Django下載與運行

2.1、Django的下載

在這里插入圖片描述

目前我們學習和使用的版本是3.2LTS版本

目前開源軟件發布一般會有2個不同的分支版本:
1. 普通發行版本:                  經常用于一些新功能,新特性,但是維護周期短,不穩定.
2. 長線支持版本[LongTerm Supper]: 維護周期長,穩定軟件版本格式: 大版本.小版本.修訂號
大版本一般是項目內容/軟件的核心架構發生改動, 以前的代碼已經不適用于新的版本
小版本一般是功能的刪減, 刪一個功能,小版本+1, 減一個功能,小版本+1
修訂號一般就是原來的代碼出現了bug, 會針對bug代碼進行修復, 此時就會增加修訂號的數值

在這里插入圖片描述

官網: http://www.djangoproject.com

文檔:https://docs.djangoproject.com/zh-hans/3.2/

在本地安裝

pip install django
pip install django==3.2
pip源:https://pypi.douban.com/simple/  豆瓣源https://pypi.tuna.tsinghua.edu.cn/simple   清華源使用格式:pip install django -i https://pypi.douban.com/simple/
# 查看django版本號
django-admin --version

當然在以后開發或者學習中,我們肯定都會遇到在一臺開發機子中,運行多個項目的情況,有時候還會出現每個項目的python解析器或者依賴包的版本有差異.

2.2、Django的啟動運行

創建虛擬環境并在虛擬環境中下載安裝django包

pip install django==3.2 -i https://pypi.douban.com/simple/
cd ~/Desktop
django-admin startproject demo

完成了以后,直接直接下pycharm下面的終端terminal中使用命令運行django

python manage.py runserver 8090

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

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

相關文章

PostgreSQL全棧部署指南:從零構建企業級高可用數據庫集群

PostgreSQL全棧部署指南:從零構建企業級數據庫集群 前言: 本文詳解了**PostgreSQL**所有的部署方式,如 yum 安裝、源碼編譯安裝、RPM包手動安裝,以及如何選擇適合的安裝方式。適合不同的場景應用。通過高可用部署詳細了解安裝思路及過程,包括內網環境下的配置、主節點的創…

MQTT 和 HTTP 有什么本質區別?

MQTT 和 HTTP 的本質區別在于它們設計的初衷和核心工作模式完全不同。它們是為解決不同問題而創造的兩種工具。 簡單來說: HTTP 就像是去圖書館問問題:你(客戶端)主動去找圖書管理員(服務器),…

GtkSharp跨平臺WinForm實現

文章目錄 跨平臺架構設計跨平臺項目配置GtkSharp串口通訊實現跨平臺部署配置Linux系統配置macOS系統配置 相關學習資源GTK#跨平臺開發跨平臺.NET開發Linux開發環境macOS開發環境跨平臺UI框架對比容器化部署開源項目參考性能優化與調試 跨平臺架構設計 基于GTKSystem.Windows.F…

【閑談】對于c++未來的看法

對于C未來看法 C 作為一門誕生于上世紀的編程語言,在軟件工業發展史上扮演了不可替代的角色。盡管近年來諸如 Rust、Go、Swift、Kotlin 等現代語言相繼崛起,C 依然在系統軟件、高性能服務、嵌入式等關鍵領域中發揮著主力作用。本文將從 C 的當前應用前景…

【論文】云原生事件驅動架構在智能風控系統中的實踐與思考

摘要 2023年6月至2024年3月,我作為某頭部證券公司新一代極速交易系統的首席架構師,主導設計并落地了基于云原生事件驅動架構的全新交易風控平臺。該項目旨在攻克原有系統無法支撐峰值20萬筆/秒交易量、風控延遲超過3秒以及行情劇烈波動時系統崩潰等核心痛點。通過構建以Kube…

opensbi從0到1入門學習

最近要在RV64的平臺上把Linux給bringup起來,由于當下的工作主要集中在底層硬件接口驅動、CPU的操作及RTOS應用等,雖然之前搞過Arm Linux的開發工作,但是比較基礎的玩的比較少,所以真正要搞把系統bringup起來,我之前的知…

Python打卡:Day36

復習日 浙大疏錦行

開發過程中的時空權衡:如何優雅地平衡時間與空間效率

文章目錄 恒的開發者困境一、理解時間與空間的基本概念1. 時間復雜度2. 空間復雜度 二、時空權衡的基本原則1. 硬件環境決定優先級2. 應用場景決定策略3. 數據規模的影響 三、實際開發中的權衡策略1. 緩存為王:用空間換時間2. 壓縮數據:用時間換空間3. 預…

RAG 應用實戰指南:從商業目標到系統落地與運營 E2E 實踐

專欄入口 前言 在當今信息爆炸的時代,如何高效地從海量數據中提取有用信息并提供智能問答服務,成為眾多企業關注的焦點。檢索增強生成(Retrieval-Augmented Generation, RAG)技術以其結合了檢索模型的精準性和生成模型的靈活性&a…

關于晨脈的概念解釋

晨脈(Resting Morning Pulse)是指??人體在清晨清醒后、未進行任何活動前??,于臥床狀態下測量的每分鐘脈搏或心率次數。它反映了人體在無運動消耗、無神經干擾時的基礎代謝狀態,是評估心臟功能、身體恢復情況及運動適應性的重要…

自然語言處理入門

一、概念 自然語言處理(Natural Language Processing, 簡稱NLP)是計算機科學與語言中關注于計算機與人類語言間轉換的領域。 二、發展史 2012年:深度學習的崛起 Word2Vec的提出(Mikolov等,2013年正式發表&#xff0c…

【算法 day12】LeetCode 226.翻轉二叉樹 |101. 對稱二叉樹 |104.二叉樹的最大深度|111.二叉樹的最小深度

226.翻轉二叉樹 (前序,后序) 題目鏈接 | 文檔講解 |視頻講解 : 鏈接 1.思路: 翻轉的是指針,不是數值 前序遍歷和后序遍歷都可以 中序不行,中序遍歷的順序是左中右,反轉左指針后,到根節點,…

Spring Boot 整合 Swagger3 如何生成接口文檔?

前后端分離的項目,接口文檔的存在十分重要。與手動編寫接口文檔不同,swagger是一個自動生成接口文檔的工具,在需求不斷變更的環境下,手動編寫文檔的效率實在太低。與新版的swagger3相比swagger2配置更少,使用更加方便。…

Rust 的智能指針

在 Rust 中,智能指針是一種特殊的數據結構,它不僅存儲數據的地址,還提供了額外的功能,如自動內存管理、引用計數等。智能指針在 Rust 中非常重要,因為它們幫助開發者管理內存,同時保持代碼的安全性和效率。…

Redis RDB 持久化:原理、觸發方式與優缺點全解析

引言 作為 Redis 最經典的持久化機制之一,RDB(Redis DataBase)憑借高效的快照生成能力和快速的恢復速度,一直是開發者的心頭好。但很多人對它的底層原理、觸發時機和適用場景仍存在疑惑。今天咱們就對RDB進行全解析,幫…

設計模式精講 Day 12:代理模式(Proxy Pattern)

【設計模式精講 Day 12】代理模式(Proxy Pattern) 文章內容 在軟件開發中,代理模式是一種常見的結構型設計模式,它通過引入一個代理對象來控制對真實對象的訪問。這種模式不僅能夠增強系統的安全性、靈活性和可擴展性&#xff0c…

企業級知識庫私有化部署:騰訊混元+云容器服務TKE實戰

1. 背景需求分析 在金融、醫療等數據敏感行業,企業需要構建完全自主可控的知識庫系統。本文以某證券機構智能投研系統為原型,演示如何基于騰訊混元大模型與TKE容器服務實現: 千億級參數模型的私有化部署金融領域垂直場景微調高并發低延遲推…

Qt事件系統詳解

一、Qt事件系統概述 Qt事件系統是Qt框架中處理用戶輸入、窗口交互、定時器、異步操作等機制的核心。所有事件均繼承自QEvent類,并通過事件循環(Event Loop)分發到目標對象。 事件系統基本概念 事件(Event):描述應用程序內部或外…

CPU性能篇-系統中出現大量不可中斷進程和僵尸進程怎么辦? Day 05

在上下文切換的文章中,學習并分析了系統 CPU 使用率高的問題,剩下的等待 I/O 的 CPU 使用率(以下簡稱為 iowait)升高,也是最常見的一個服務器性能問題。今天就來看一個多進程 I/O 的案例,并分析這種情況。 …

ASP.NET Core + Jenkins 實現自動化發布

一、安裝Jenkins 我這邊服務器是Linux CentOS 7 ,使用SSH 登錄云服務器后,輸入以下命令安裝jenkins. sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/red…