Python框架Django入門教程

????????Django 是一個使用 Python 編程語言開發的、免費且開源的 Web 應用框架。它遵循 "DRY(Don't Repeat Yourself)" 原則,旨在簡化創建功能豐富的、高效率的 Web 網站。Django 提供了模型-視圖-控制器(MVC)架構的實現,以及ORM(對象關系映射)系統、內置了?admin 界面、URL 路由、模板引擎、表單處理和強大的安全特性。

開發環境:Python3 + PyCharm專業版

一、創建項目

打開PyCharm,新建Django項目(PyCharm社區版無法快速創建Django項目),設置新項目的路徑和項目名,直接點擊創建即可

在PyCharm的終端中可以使用pip命令來查看默認安裝的依賴:

默認安裝的是最新版本的Django,可根據實際需求,安裝指定版本的Django:

pip uninstall django
pip install django==3.2.18

二、項目文件主要文件介紹

修改setting.py文件,配置數據庫

# 數據庫配置 默認的數據庫為sqlite
DATABASES = {'default': {'ENGINE': 'djangoDemo.db.backends.mysql',  # 數據庫類型'NAME': 'db_name',  # 數據庫名'USER': 'username',  # 用戶名'PASSWORD': 'password',  # 密碼'HOST': '127.0.0.1',  # 數據庫服務器地址'PORT': 3306,  # 端口號(MySQL默認3306)}
}

打開終端,執行命令,安裝mysql依賴:

pip install mysqlclient

三、啟動項目

? ? ? ? PyCharm運行manage.py啟動項目,默認啟動端口為8000,直接點擊藍色的?http://127.0.0.1:8000/? 即可跳轉到瀏覽器訪問Django的主頁

控制臺日志:

瀏覽器主頁:

四、新建應用模塊

在PyCharm的終端中執行命令,創建新的應用模塊:

python manage.py startapp app名

生成的應用模塊目錄?:

修改setting.py文件,找到INSTALLED_APPS(約33行處),將新建的應用模塊注冊到Django中

# 用來注冊App 前6個是django自帶的應用
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','myapp',  # 注冊新的app
]

五、寫一個Hello World接口

修改urls.py路由配置文件,添加新的路由:

在新建的應用模塊中的views.py中添加hell接口:

瀏覽器訪問?http://127.0.0.1:8000/?

六、寫一個用戶表的增刪改查接口

創建user表:

CREATE TABLE `user`  (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(20) CHARACTER SET utf8mb4  NOT NULL COMMENT '名字',`account` varchar(20) CHARACTER SET utf8mb4  NOT NULL COMMENT '賬號',`password` varchar(20) CHARACTER SET utf8mb4  NOT NULL COMMENT '密碼',`age` int NULL DEFAULT NULL COMMENT '年齡',`gender` char(1) CHARACTER SET utf8mb4  NULL DEFAULT NULL COMMENT '性別',`money` decimal(10, 2) NOT NULL COMMENT '余額,人民幣單位:元',`create_time` datetime NULL DEFAULT NULL COMMENT '創建時間',`update_time` datetime NULL DEFAULT NULL COMMENT '更新時間',`isdel` int NOT NULL DEFAULT 0 COMMENT '該用戶是否已刪除,0未刪除,1已刪除',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '小白', 'aaa@qq.com', '123456', 15, '男', 100.00, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 0);
INSERT INTO `user` VALUES (2, '小明', 'bbb@qq.com', '123456', 16, '男', 58.00, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 0);
INSERT INTO `user` VALUES (3, '大白', 'ccc@qq.com', '123456', 22, '女', 168.00, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 0);
INSERT INTO `user` VALUES (4, '大明', 'ddd@qq.com', '123456', 21, '男', 12.50, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 0);
INSERT INTO `user` VALUES (5, '小剛', 'eee@qq.com', '123456', 17, '男', 65.23, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 1);

在models.py中創建user表的映射類:

from django.db import models# 模型層,實體類層
class User(models.Model):# 設置所需要映射的數據表,默認映射的表名是:應用名_全小寫類名class Meta:db_table = "user"ISDEL_CHOICES = ((0, "未刪除"),(1, "已刪除"))# Django自帶id字段,無需手動添加# id = models.IntegerField()# 將變量與數據庫表字段進行映射,CharField限制該字段為字符串類型,限制該字段的長度、默認值name = models.CharField(max_length=20, default="")account = models.CharField(max_length=20, default="")password = models.CharField(max_length=16, default="", null=False)age = models.IntegerField()gender = models.CharField(max_length=1)money = models.DecimalField(max_digits=10, decimal_places=2)create_time = models.DateTimeField()update_time = models.DateTimeField()# choices限制字段的取值范圍,只能是0和1isdel = models.IntegerField(null=False, choices=ISDEL_CHOICES)

未完待續 .......

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

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

相關文章

時尚圈的節制美學 — 奧柔拉 AVRALA的獨特設計理念

在這個多元化的時代,女性正在經歷一場前所未有的角色變革。她們不再僅僅滿足于傳統的社會角色,而是勇敢地追求個人職業發展和自我實現。在這樣的背景下,服飾不僅僅是外在的裝飾,更是內心故事的講述者、個性自我的表達者、身份歸屬…

KaiOS Data PDN 數據建立流程

代碼邏輯 APN創建 在 DataCallManager.jsm中,會對所有apnsetting創建一個datacall,其中會包含dataprofile的成員(通過apn參數來創建),在之后的流程用于直接發送到modem建立PDN。 PDN建立 1、DataCallManager.jsm -dcInterface.setupDataCall //RILNetworkInterface.c…

C語言內存泄漏及檢測方法

目錄 1. 內存泄漏概述 1.1 內存泄漏定義 1.2 內存泄漏的危害 1.3 內促泄漏的原因 2. C語言中的內存管理 2.1 C語言內存分配方式 2.2 C語言內存管理函數 2.3 動態內存管理注意事項 3. 內存泄漏的檢測與定位 3.1 內存泄漏檢測工具 3.2 內存泄漏定位方法 3.3 內存泄漏…

NX/UG二次開發—3D幾何—多邊形內部最大圓

多邊形內部最大圓,為什么不能說最大內切圓?如果正方形或正凸多邊形,最大內部圓是與邊相切的,但對于不規則多邊形,很多情況是正好經過一些凹點。 本次介紹在NX中計算封閉邊界內部最大圓: 1、首先按順序排序…

Spring、SpringMVC

一、Spring框架中的單例Bean是線程安全的嗎? 【默認單例的情況下】Spring Bean并沒有可變的狀態(如Service類和DAO類),即只能查不能改,所以沒有并發問題,所以某種程度上來說Spring的單例Bean是線程安全的。…

【ZZULI數據結構實驗】壓縮與解碼的鑰匙:赫夫曼編碼應用

📃博客主頁: 小鎮敲碼人 💚代碼倉庫,歡迎訪問 🚀 歡迎關注:👍點贊 👂🏽留言 😍收藏 🌏 任爾江湖滿血骨,我自踏雪尋梅香。 萬千浮云遮碧…

Faiss原理及使用總結

Faiss(Facebook AI Similarity Search)是一個用于高效相似性搜索和密集向量聚類的庫。 一、原理 向量表示與相似度度量:在Faiss中,數據通常被表示為高維向量,這些向量可以來自深度學習模型的特征提取,也可…

2024-05-11 問AI:在深度學習中,學習率是什么

文心一言 在深度學習中,**學習率(Learning Rate)**是一個非常重要的超參數,它控制著模型在訓練過程中參數更新的步長。具體來說,學習率決定了在每次迭代(或稱為一個epoch)中,模型根…

前端工程化之包管理器

這里寫目錄標題 什么是包包管理工具常用的包管理工具npmnpm 基本使用初始化搜索工具包下載安裝包導入 npm 包基本流程生產依賴與開發依賴全局安裝安裝全部依賴安裝指定版本的包刪除依賴包 cnpm全局安裝nrm 的使用 yarn全局安裝yarn 常用命令 pnpm 【推薦使用】全局安裝 什么是包…

我國吻合器市場規模不斷擴大 國產化率有所增長

我國吻合器市場規模不斷擴大 國產化率有所增長 吻合器是替代手工切除或縫合的一種醫療器械,其工作原理與訂書機十分相似,可利用鈦釘對組織進行離斷或吻合。經過多年發展,吻合器種類逐漸增多,根據手術方式不同,吻合器大…

【JavaEE 初階(三)】多線程代碼案例

?博主主頁: 33的博客? ??文章專欄分類:JavaEE?? 🚚我的代碼倉庫: 33的代碼倉庫🚚 🫵🫵🫵關注我帶你了解更多線程知識 目錄 1.前言2.單例模式2.1餓漢方式2.2餓漢方式 3.阻塞隊列3.1概念3.2實現 4.定時器4.1概念4.…

支付寶小程序如何去除頁面下拉回彈

描述:支付寶小程序頁面下拉時會產生回彈,如果頁面上有拖拽功能,會有影響 解決方法: 頁面xx.config.js中設置:allowsBounceVertical: “NO” 官方文檔:https://opensupport.alipay.com/support/FAQ/7110b5d…

WT32-ETH01作為TCP Client進行通訊

目錄 模塊簡介WT32-ETH01作為TCP Client設置電腦作為TCP Server設置連接并進行通訊總結 模塊簡介 WT32-ETH01網關主要功能特點: 采用雙核Xtensa⑧32-bit LX6 MCU.集成SPI flash 32Mbit\ SRAM 520KB 支持TCP Server. TCP Client, UDP Server. UDP Client工作模式 支持串口、wif…

鴻蒙OpenHarmony技術:【Docker編譯環境】

Docker環境介紹 OpenHarmony為開發者提供了兩種Docker環境,以幫助開發者快速完成復雜的開發環境準備工作。兩種Docker環境及適用場景如下: 獨立Docker環境:適用于直接基于Ubuntu、Windows操作系統平臺進行版本編譯的場景。基于HPM的Docker環…

其他編程語言中調用 Python 腳本,如何設置Python腳本的相對路徑

import os# 假設 script_directory 是你的腳本所在的目錄 script_directory os.path.dirname(os.path.abspath(__file__))# 使用 os.path.join 來構建相對路徑 relative_path_to_image os.path.join(script_directory, 合并/figure_pic2.png)# 現在你可以使用這個相對路徑來加…

uni-app+vue3 +uni.connectSocket 使用websocket

前言 最近在uni-appvue3websocket實現聊天功能,在使用websocket還是遇到很多問題 這次因為是app手機應用,就沒有使用websocket對象,使用的是uni-app的uni.connectSocket 為了方便測試這次用的是node.js一個簡單的dom,來聯調模擬…

Apache Flume Agent內部原理

Apache Flume Agent內部原理 Apache Flume 是一個可擴展的、分布式的日志收集、聚合和傳輸系統。在 Flume 中,Agent 是一個獨立的進程,負責接收、傳輸和處理數據。Agent 內部包含多個組件,每個組件都有不同的功能和責任。 1. Source&#xff…

5個 Elasticsearch 核心組件

Elasticsearch 是一個基于 Lucene 的搜索引擎,它提供了分布式、高可用、多租戶的能力。Elasticsearch 的核心組件包括節點(Node)、集群(Cluster)、索引(Index)、分片(Shard&#xff…

三下鄉社會實踐投稿攻略在這里

在當今信息爆炸的時代,如何讓自己的聲音被更多人聽到,成為許多人和企業所關心的問題。其中,向各大媒體網站投稿,成為了一種常見的宣傳方式。但是,如何投稿各大媒體網站?新聞媒體發文策略又有哪些呢&#xf…

Flutter Clipboard實現復制功能

Flutter內置了Clipboard 功能,可以幫助我們完成復制粘貼的功能,比如我們想把“hello flutter”復制到粘貼板,代碼如下: TextButton(onPressed: () async {await Clipboard.setData(ClipboardData(text: hello flutter)