Django入門筆記

  • Python知識點:函數、面向對象。

  • 前端開發:HTML、CSS、JavaScript、jQuery、BootStrap。

  • MySQL數據庫。

  • Python的Web框架:

    • Flask,自身短小精悍 + 第三方組件。

    • Django,內部已集成了很多組件 + 第三方組件。【主要】

1.安裝django

pip install django

e:\python
- python.exe
- Scripts
- pip.exe
- django-admin.exe ? 【工具,創建django項目中的文件和文件夾】
- Lib
- 內置模塊
- site-packages
- openpyxl
- python-docx
- flask
- django ? ? ? ? 【框架的源碼】

2.創建項目

django中項目會有一些默認的文件和默認的文件夾。

2.1 在終端

  • 打開終端。

  • 進入某個目錄(項目放在哪里)。

  • 執行命令創建項目

"e:\python\Scripts\django-admin.exe" startproject 項目名稱

# 如果 e:\python\Scripts 已加入環境系統環境變量。

django-admin startproject 項目名稱

2.2 Pycharm

- Python解釋器安裝目錄:E:\DownloadSoftwere\python lib....
/Library/Frameworks/Python.framework/Versions/3.10/

-E:\DownloadSoftwere\pycharmproject\djangoProject(基于Django創建的項目)

特殊說明:

  • 命令行,創建的項目是標準的。

  • pycharm,在標準的基礎上默認給咱們加了點東西。

    • 創建了一個templates目錄【刪除】

    • settings.py中【刪除】

當然也可以不刪除,將html頁面寫到templates

默認項目的文件介紹:

djangoProject1
├── manage.py ? ? ? ? 【項目的管理,啟動項目、創建app、數據管理】【不要動】【***常常用***】
└── mysite
├── __init__.py
├── settings.py ? ?【項目配置】 ? ? ? ? ?【***常常修改***】
├── urls.py ? ? ? ?【URL和函數的對應關系】【***常常修改***】
├── asgi.py ? ? ? ?【接收網絡請求】【不要動】
└── wsgi.py ? ? ? ?【接收網絡請求】【不要動】

3. 創建app

- 項目
- app,用戶管理【表結構、函數、HTML模板、CSS】
- app,訂單管理【表結構、函數、HTML模板、CSS】
- app,后臺管理【表結構、函數、HTML模板、CSS】
- app,網站 ? 【表結構、函數、HTML模板、CSS】
- app,API ? ?【表結構、函數、HTML模板、CSS】
..

注意:我們開發比較簡潔,用不到多app,一般情況下,項目下創建1個app即可。

├── app01
│???├── __init__.py
│???├── admin.py ? ? ? ? 【固定,不用動】django默認提供了admin后臺管理。
│???├── apps.py ? ? ? ? ?【固定,不用動】app啟動類
│???├── migrations ? ? ? 【固定,不用動】數據庫變更記錄
│???│???└── __init__.py
│???├── models.py ? ? ? ?【**重要**】,對數據庫操作。
│???├── tests.py ? ? ? ? 【固定,不用動】單元測試
│???└── views.py ? ? ? ? 【**重要**】,函數。
├── manage.py
└── djangoProject1
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py ? ? ? ? ?【URL->函數】
└── wsgi.py

4.快速上手

確保app已注冊 【settings.py】

編寫URL和視圖函數對應關系 【urls.py】

編寫視圖函數 【views.py】

啟動django項目

命令行啟動

python manage.py runserver 

Pycharm啟動

4.1 再寫一個頁面

- url -> 函數
- 函數

4.2 templates模板

注意:

1.django中如果在根項目中的settings.py的TEMPLATES元組中的DIRS添加了templates參數,默認先選擇根目錄的templates文件夾

2.否則按注冊app的順序尋找對應子項目的templates文件夾

4.3 靜態文件

在開發過程中一般將:

  • 圖片

  • CSS

  • js

都會當做靜態文件處理。

4.3.1 static目錄

在app目錄下創建static文件夾。

4.3.2 引用靜態文件

5.模板語法

本質上:在HTML中寫一些占位符,由數據對這些占位符進行替換和處理。

案例:偽聯通新聞中心

6.請求和響應

關于重定向:

案例:用戶登錄

url.py

    #案例:登錄頁面path('login/',views.login),

view.py

from django.http import HttpResponse
from django.shortcuts import render , redirect
from app01.models import UserInfodef login(request):if request.method == "GET":return render(request, "login.html")username = request.POST.get("user")password = request.POST.get("pwd")if username == "user" and password == "123":return redirect("https://www.baidu.com/")return render(request, 'login.html', {"error_msg":"用戶名或密碼錯誤"})

login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>用戶登錄</h1>
<form method="post" action="/login/">{% csrf_token %}<input type="text" name="user" placeholder="用戶名"><input type="password" name="pwd" placeholder="密碼"><input type="submit"  value="提交"><span style="...">{{ error_msg }}</span>
</form>
</body>
</html>

7.數據庫操作

  • MySQL數據庫 + pymysql

import pymysql# 1.連接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd="123456", charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 2.發送指令
cursor.execute("insert into admin(username,password,mobile) values('wangguanyuan','123456','18316785252')")
conn.commit()# 3.關閉
cursor.close()
conn.close()

Django開發操作數據庫更簡單,內部提供了ORM框架。

7.1 安裝第三方模塊

pip install mysqlclient

7.2 ORM

ORM可以幫助我們做兩件事:

  • 創建、修改、刪除數據庫中的表(不用你寫SQL語句)。 【無法創建數據庫】

  • 操作表中的數據(不用寫SQL語句)。

1. 自己創建數據庫
  • 啟動MySQL服務

  • 自帶工具創建數據庫

create database gx_day15 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
2. django連接數據庫

在settings.py文件中進行配置和修改。

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'gx_day15',  # 數據庫名字'USER': 'root','PASSWORD': '123456','HOST': '127.0.0.1',  # 那臺機器安裝了MySQL'PORT': 3306,}
}
3.django操作表
  • 創建表

  • 刪除表

  • 修改表

創建表:在models.py文件中

from django.db import models# Create your models here.
class UserInfo(models.Model):name = models.CharField(max_length=32)password = models.CharField(max_length=64)age = models.IntegerField()

再pycharm的Terminal中執行命令:

python?manage.py makemigrations
python?manage.py migrate

注意:app需要提前注冊。

案例:用戶管理

1. 展示用戶列表

url.py

path('info/list/', views.info_list),

view.py

def info_list(request):data_list = UserInfo.objects.all()return render(request,'info_list.html',{"data_list":data_list})

info_list.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>INFO列表</h1><table border="1"><thead><tr><th>id</th><th>姓名</th><th>密碼</th><th>年齡</th><th>操作</th></tr></thead><tbody>{% for obj in data_list %}<tr><td>{{ obj.id }}</td><td>{{ obj.name }}</td><td>{{ obj.password }}</td><td>{{ obj.age }}</td><td><a href="/info/delete/?nid={{ obj.id }}">刪除</a></td></tr>{% endfor %}<tr></tr></tbody></table>
</body>
</html>

2.添加用戶

url.py

    path('info/add/',views.info_add),

view.py

def info_add(request):if request.method == "GET":return render(request, 'info_add.html')user = request.POST.get("user")pwd = request.POST.get("pwd")age = request.POST.get("age")UserInfo.objects.create(name=user,password=pwd,age=age)return redirect("/info/list")

info_add.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>添加用戶</h1>
<form method="post">{% csrf_token %}<input type="text" name = "user" placeholder="用戶名"><input type="text" name = "pwd" placeholder="密碼"><input type="text" name = "age" placeholder="年齡"><input type="submit" value="提交"></form>
</body>
</html>

3.刪除用戶

url.py

path('info/delete/',views.info_delete)

view.py

def info_delete(request):nid = request.GET.get("nid")UserInfo.objects.filter(id = nid).delete()return redirect("/info/list")

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

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

相關文章

當Claude Code失靈,Qwen Code能否成為你的救星?

當Claude Code失靈&#xff0c;Qwen Code能否成為你的救星&#xff1f; 一、開頭&#xff1a;點明困境&#xff0c;引出主角 作為一個大模型博主&#xff0c;日常工作中我經常會使用各種 AI 工具來提高效率&#xff0c;Claude Code 就是我之前非常依賴的一款代碼生成助手 。它…

Go語言快速入門教程(JAVA轉go)——1 概述

優勢 第一個理由&#xff1a;對初學者足夠友善&#xff0c;能夠快速上手。 業界都公認&#xff1a;Go 是一種非常簡單的語言。Go 的設計者們在發布 Go 1.0 版本和兼容性規范后&#xff0c;似乎就把主要精力放在精心打磨 Go 的實現、改進語言周邊工具鏈&#xff0c;還有提升 Go …

【Rust多進程】征服CPU的藝術:Rust多進程實戰指南

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

OpenCV 高階實戰:圖像直方圖與掩碼圖像深度解析

目錄 一、圖像直方圖&#xff1a;讀懂圖像的 “像素分布報告” 1. 什么是圖像直方圖&#xff1f; 2. 圖像直方圖的核心作用 &#xff08;1&#xff09;分析亮度分布 &#xff08;2&#xff09;判斷對比度高低 &#xff08;3&#xff09;輔助圖像增強與閾值分割 &#xf…

基于stm32的家庭安全監測系統設計

若該文為原創文章&#xff0c;轉載請注明原文出處。一、引言&#xff08;一&#xff09;研究背景及意義背景&#xff1a;隨著智能家居概念的普及&#xff0c;人們對家庭安全、舒適度和節能提出了更高要求。傳統安防系統功能單一、各系統獨立&#xff0c;缺乏聯動和遠程管理能力…

Oracle體系結構-控制文件(Control Files)

一、 原理 (Principle) 核心定位&#xff1a; 控制文件是一個小型的二進制文件&#xff0c;由 Oracle 實例在啟動和操作過程中持續讀寫。它是數據庫物理結構的權威記錄。數據庫無法啟動或正常操作時&#xff0c;如果無法訪問控制文件&#xff0c;實例將無法識別數據文件和重做日…

路由 下一跳 網關 兩個不同網段的ip如何通過路由器互通

路由 (Routing)核心思想&#xff1a;路徑選擇是什么&#xff1f; 路由是指數據包從源主機傳輸到目標主機的整個過程。這個過程就像寄快遞&#xff1a;你需要決定包裹經過哪些中轉站才能最終到達收件人手里。做什么&#xff1f; 網絡中的設備&#xff08;主要是路由器&#xff0…

HiDDeN論文解讀與代碼實現

論文&#xff1a;HiDDeN: Hiding Data With Deep Networks 作者&#xff1a;Jiren Zhu, Russell Kaplan, Justin Johnson, Li Fei-Fei一、研究背景 在圖像信息隱藏領域&#xff0c;通常有兩類典型的應用場景&#xff1a;隱寫 (Steganography) 目標&#xff1a;實現秘密通信。要…

實驗室服務器配置|實驗室多人共享GPU|通過Docker實現Linux系統多用戶隔離與安全防控

利用實驗室服務器跑實驗的時候&#xff0c;通常就是兩種方案&#xff0c;一個是向日葵遠程桌面進行操作&#xff0c;一個是通過ssh進行連接&#xff0c;用ssh的話&#xff0c;一般服務器都在內網&#xff08;例如校園網&#xff09;&#xff0c;是無法在公網&#xff08;不在校…

2019考研數學(二)真題

一、選擇題 (1) (2) (3) (4) 遺漏點&#xff1a;由通解知特解&#xff0c;特解代入微分方程 (5) ★記住這個題&#xff0c;用的泰勒展開(6) (7) 遺忘點&#xff1a; ★伴隨矩陣的秩與原矩陣秩的關系&#xff1a; (8) 錯誤點&#xff1a;粗心 二、填空題 (9) 易混淆點&#xff…

10 分鐘上手 ECharts:從“能跑”到“生產級”的完整踩坑之旅

10 分鐘上手 ECharts&#xff1a;從“能跑”到“生產級”的完整踩坑筆記 如果你也曾 復制了官方 Demo 卻不知道怎么拆、窗口一拉伸圖表就變形、切換標簽頁后內存暴漲——這篇博客就是為你寫的。 我會用 6 個遞進版本 的源碼&#xff0c;帶你把一張 最簡柱狀圖 逐步進化成 可銷毀…

二級緩存在實際項目中的應用

二級緩存在項目中的應用 目錄 1. 二級緩存簡介2. 應用場景3. 重難點分析4. 結合SpringBoot使用5. 最佳實踐與案例6. 總結 1. 二級緩存簡介 1.1 什么是二級緩存 二級緩存&#xff08;Second-Level Cache&#xff09; 是Hibernate框架中的一個重要特性&#xff0c;它提供了應…

深入淺出CRC校驗:從數學原理到單周期硬件實現 (2)CRC數學多項式基礎

數學的優雅&#xff1a;剖開CRC的多項式除法核心看似復雜的CRC校驗&#xff0c;其核心建立在優雅的數學基礎之上。本文將為您揭開CRC算法的數學面紗&#xff0c;讓您真正理解多項式除法的精妙之處。模2運算&#xff1a;CRC世界的特殊算術 CRC計算建立在一種特殊的代數系統上——…

軟考初級有沒有必要考?

對正在學習相關專業的學生或者是行業新人&#xff0c;這篇文章從軟考初級的含義、適合哪些人考、考試難度等方面解答&#xff0c;幫助你判斷要不要報考。一、軟考初級是什么&#xff1f; 軟考初級是軟考體系里面的基礎級別&#xff0c;主要面向在校大學生或是IT行業新人&#x…

11 Prompt 工程進階:Few-shot 與 Chain-of-Thought

11 Prompt 工程進階&#xff1a;Few-shot 與 Chain-of-Thought 前10節總結 & 后10節展望 在前 10 節&#xff0c;我們已經完成了 AI 產品經理的入門階段&#xff1a; 1–3&#xff1a;理解了大模型的基本概念、Token、Prompt 基礎&#xff1b;4–5&#xff1a;體驗了本地部…

ARM1.(ARM體系結構)

1.基本概念嵌入式:以應用為心&#xff0c;以計算機技術為礎&#xff0c;軟便件可被的專用計算機系統。計算機系統的軟件基本組成: 系統軟件、應用軟件。計算機系統的硬件基本組成&#xff1a;運算器、控制器、存諸器、輸入設備、輸出設備日常生活中遇到的專業術語&#xff1a…

Django全棧班v1.01 Python簡介與特點 20250910

從零開始的Python編程之旅 “人生苦短&#xff0c;我用Python。”這不僅僅是Python程序員的口頭禪&#xff0c;更是對Python強大能力的最好詮釋&#xff01;&#xff01;&#xff01; 為什么全世界有超過1500萬開發者選擇Python&#xff1f; 為什么Python連續多年蟬聯最受歡…

【WebApi】什么情況開啟如何開啟緩存

在 ASP.NET Core WebAPI 中開啟緩存是優化性能、減少服務器負載和提升用戶體驗的非常重要的手段。但并非所有情況都適合開啟緩存。 下面我將從 “什么情況下開啟” 和 “如何開啟” 兩個方面為你詳細解釋。 一、什么情況下應該開啟緩存? 總的來說,緩存適用于 “變化不頻繁但…

Go語言類型斷言全解析

類型斷言的基本概念類型斷言(Type Assertion)是Go語言中用于檢查接口值底層具體類型的機制。它本質上是一種運行時類型檢查的操作&#xff0c;允許程序在運行時判斷接口變量是否持有特定的類型值&#xff0c;并提取該類型的值。這是Go語言類型系統中的一個重要特性&#xff0c;…

大模型在題目生成中的安全研究:攻擊方法與防御機制

大模型在題目生成中的安全研究&#xff1a;攻擊方法與防御機制 文章目錄大模型在題目生成中的安全研究&#xff1a;攻擊方法與防御機制一、引言二、大模型在題目生成中的安全漏洞與攻擊方法2.1 大模型在題目生成中的安全漏洞分析2.1.1 訓練數據相關漏洞2.1.2 模型架構與特性相關…