準備工作+1、請求和響應+2、模型和管理站點

Django快速入門——創建一個基本的投票應用程序

  • 準備工作
    • 1、創建虛擬環境
    • 2、安裝django
  • 1、請求和響應
    • (1)創建項目
    • (2)用于開發的簡易服務器
    • (3)創建投票應用
    • (4)編寫第一個視圖
      • 1、編寫視圖函數
      • 2、url映射
      • URLconf文件中指定創建的polls.urls模塊
      • 3、運行服務器
      • 函數path()
  • 2、模型和管理站點
    • (1)數據庫配置
    • (2)創建模型
    • (3)激活模型
      • 總結步驟
    • (4)初試API
    • (5)介紹Django管理頁面
      • 創建一個管理員賬號
    • (6)啟動開發服務器
    • (7)進入管理站點頁面
    • (8)向管理頁面加入投票應用
    • (9)體驗便捷的管理功能

準備工作

1、創建虛擬環境

開始之前,最好創建一個虛擬環境來管理包。python自帶的“venv”工具就夠用了(輕量級且快速)
在這里插入圖片描述

2、安裝django

在這里插入圖片描述
檢查版本信息
在這里插入圖片描述

1、請求和響應

(1)創建項目

自動生成的代碼配置一個django 項目(項目實例需要的設置項集合)
包含

  • 數據庫配置
  • Django配置
  • 應用程序配置

cd到放置代碼的目錄,創建項目

django-admin startproject vote(可自定義名稱)

創建的目錄結構如下
在這里插入圖片描述

  • 最外層的 vote/根目錄只是你項目的容器,根目錄名稱對 Django 沒有影響,你可以將它重命名為任何你喜歡的名稱。
  • manage.py:一個讓你用各種方式管理 Django 項目的命令行工具。
  • 里面一層的 vote/目錄包含你的項目,它是一個純 Pyhon包。它的名字就是當你引用它內部任何東西時需要用到的 Python 包名。(比如vote.urls)
  • vote/_init-.py:一個空文件,告訴 Python 這個目錄應該被認為是一個Python 包
  • settings.py:Django 項目的配置文件
  • asgi.py:作為你的項目的運行在 ASGI 兼容的 Web 服務器上的入口
  • wsgi.py:作為你的項目的運行在 WSGI兼容的Web服務器上的入口

(2)用于開發的簡易服務器

確保項目真實創建

py manage.py runserver

在這里插入圖片描述
訪問http://127.0.0.1:8000/:
在這里插入圖片描述
你已經啟動了 Django 開發服務器,這是一個用純 Python 編寫的輕量級網絡服務器。我們在 Django 中包含了這個服務器,所以你可以快速開發,而不需要處理配置生產服務器的問題

(3)創建投票應用

項目vs應用
項目可以包含多個應用,應用可以被多個項目使用
在manage.py同級目錄下創建投票應用。(作為頂級模塊導入:在 Django 中,頂級模塊導入意味著你可以直接在項目的任何地方導入這個應用,而不需要使用相對導入)
在這里插入圖片描述

(4)編寫第一個視圖

1、編寫視圖函數

polls\views.py編寫

from django.http import HttpResponse
def index(request):return HttpResponse("hello world.")
  • 這是一個名為 index 的視圖函數,它接受一個 request 參數(即 HTTP 請求對象),并返回一個包含 “hello world.” 字符串的 HttpResponse 對象。這個視圖函數簡單地返回一個 HTTP 響應,顯示 “hello world.”。

要看到效果,需要將一個URL映射到它

2、url映射

新建文件 polls\url.py
在這里插入圖片描述
在它里面編寫

from django.urls import path
from . import views
urlpatterns=[path("",views.index,name="index")
]
  • urlpatterns 是一個列表,包含了一個 path 函數的調用。
  • path 函數用于將 URL 路徑映射到視圖函數。
  • “” 表示根路徑,即 http://yourdomain/。
  • views.index 指定了當用戶訪問根路徑時要調用的視圖函數,這里是 index 視圖函數。
  • name=“index” 是該 URL 模式的名稱,可用于在模板或代碼中引用該特定的 URL。

URLconf文件中指定創建的polls.urls模塊

from django.contrib import admin
from django.urls import include,pathurlpatterns = [path("polls/",include("polls.urls")),path("admin/", admin.site.urls),
]
  • urlpatterns = [ … ]: 這是一個 URL 配置列表,定義了 URL 與視圖函數其他 URL 配置之間的映射關系。
  • path(“polls/”, include(“polls.urls”)): 這條路由規則指定了當用戶訪問 polls/ 路徑時,Django 將會將** 請求傳遞給 polls 應用程序的 urls.py 文件來處理**。include(“polls.urls”) 表示將 polls 應用程序中定義的 URL 配置引入到主 URL 配置中,允許在 polls 應用程序中定義更復雜的 URL 結構

URLconf 文件通常位于每個應用程序的根目錄下,命名為 urls.py。在這個文件中,我們可以使用 Django 提供的 path() 函數來定義 URL 路由規則。每個路由規則包含一個 URL 路徑和一個處理該路徑的視圖函數或另一個 URL 配置(通過 include() 函數引入其他應用程序的 URLconf)

什么時候用到include :當包括其他URL模式時應使用,admin.site.urls(默認的管理后臺URL配置)唯一例外

3、運行服務器

py manage.py runserver

訪問http://127.0.0.1:8000/polls/(注意 網頁不要訪問錯) 會出現:
在這里插入圖片描述

函數path()

path()具有四個參數 兩個必須:route & view 。兩個可選參數:kwargs & name。

  • path()參數——route
    route 是一個匹配 URL 的準則(類似正則表達式)。當 Django 響應一個請求時,它會從 urlpatterns 的第一項開始,按順序依次匹配列表中的項,直到找到匹配的項。
    這些準則不會匹配 GET 和 POST 參數或域名。例如,URLconf 在處理請求 https://www.example.com/myapp/ 時,它會嘗試匹配 myapp/ 。處理請求 https://www.example.com/myapp/?page=3 時,也只會嘗試匹配 myapp/。
    ( ?page=3 只是附加的 GET 參數,Django 不會在 URL 路由匹配中考慮它)

  • path()參數——view
    django找到一個匹配的準則,就會調用這個特定的視圖函數。并傳入一個HttpRequest對象作為第一個參數,被“捕獲”的參數以關鍵字的形式傳入

  • path()參數——kwargs
    任意個關鍵字參數可以作為一個字典傳遞給目標視圖函數

  • path()參數——name
    為你的URL取名,能夠在django的任意地方唯一地引用它,尤其是在模板中。
    (name 參數為 URL 模式提供了一個唯一標識符,方便在視圖和模板中引用。
    它支持反向解析,使得生成 URL 更加動態和靈活。
    提高了代碼的可讀性和可維護性,避免了硬編碼 URL 帶來的問題)

2、模型和管理站點

(1)數據庫配置

vote/settings.py 編輯它之前可以先設置時區

TIME_ZONE = “UTC” 表示 Django 項目使用 UTC 作為默認時區。這對于確保時間處理的一致性和可靠性非常有用,特別是在處理跨時區的應用時。如果需要使用其他時區,可以將 TIME_ZONE 設置為相應的時區名稱。(TIME_ZONE = “Asia/Shanghai” # 設置為北京時間)

在這里插入圖片描述
默認開啟的某些應用需要至少一個數據表,執行

py manage.py migrate

結果:
在這里插入圖片描述
在這里插入圖片描述

Django的遷移代碼本質上是個歷史記錄,可以用來更新or回滾

(2)創建模型

在django里寫一個數據庫驅動的Web應用的第一步是定義模型——數據庫設計和附加的其他元數據

在這個投票應用中需要創建兩個模型,Question & Choice
在這里插入圖片描述
這些概念可以通過一個python類來描述 models.py

class Question(models.Model):question_text = models.CharField(max_length=200)pub_date=models.DateField("data published")class Choice(models.Model):question=models.ForeignKey(Question,on_delete=models.CASCADE)choice_text=models.CharField(max_length=200)votes=models.IntegerField(default=0)

在這里插入圖片描述

  • ForeignKey 字段用于在兩個模型之間建立一對多的關系。通過 ForeignKey,每個 Choice 實例都可以引用一個 Question 實例。這意味著一個問題 (Question) 可以有多個選項 (Choice),但每個選項只能屬于一個問題。
  • on_delete=models.CASCADE 參數指定了當關聯的 Question 實例被刪除時,所有相關的 Choice 實例也會被自動刪除。這有助于保持數據一致性,避免孤立的記錄

(3)激活模型

在vote\settings.py中 INSTALLED _APPS=[]添加

"polls.apps.PollsConfig"(別打錯)

此時Django項目包含了polls應用,接下來將被修改的模型部分儲存為一次遷移

py manage.py makemigrations polls 

在這里插入圖片描述

關于sqlmigrate:

在這里插入圖片描述
接下來,再次運行migrate 命令,在數據庫中創建新定義的模型的數據表
在這里插入圖片描述

遷移是非常強大的功能,它讓你在開發過程中持續的改變數據庫結構而不需要重新刪除和創建表,使得數據庫平滑升級而不丟失數據

總結步驟

  1. 編輯models.py文件,改變or創建模型——>添加應用
  2. 運行py manage.py makemigrations 為模型的改變生成遷移文件
  3. 運行py manage.py migrate 來應用數據庫遷移

數據庫遷移被分成生成和應用兩個命令的原因:
將數據庫遷移分為生成和應用兩個命令提供了更大的靈活性和控制力,有助于開發者在不同的開發階段進行細致的管理和操作。通過這種分離,開發者可以生成、審查、測試和應用數據庫變更,確保數據庫變更過程的安全性、可控性和可追溯性
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

(4)初試API

在這里插入圖片描述

  • Question.objects.all()會從數據庫中獲取所有的 Question 對象

在這里插入圖片描述
在這里插入圖片描述
總之 models.py 新增:
在這里插入圖片描述
雙下劃線__ 是“魔術方法”,可以自動調用

接下來運行py manage.py shell驗證修改
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

將第三個創建的 Choice 對象賦值給變量 c,這樣可以在后續的代碼中直接訪問和操作這個對象
在這里插入圖片描述

(5)介紹Django管理頁面

創建一個管理員賬號

py manage.py createsuperuser

在這里插入圖片描述

(6)啟動開發服務器

Djongo的管理界面默認啟用。現在啟動開發服務器

py manage.py runserver

登錄

http://127.0.0.1:8000/admin/

在這里插入圖片描述
可以通過修改settings.py文件 修改顯示語言
在這里插入圖片描述

在這里插入圖片描述

(7)進入管理站點頁面

在這里插入圖片描述

(8)向管理頁面加入投票應用

要告訴管理,問題Question對象需要一個后臺接口顯示在index頁面里
打開polls/admin.py

from django.contrib import admin
from .models import Question
admin.site.register(Question)

(9)體驗便捷的管理功能

現在我們向管理頁面注冊了問題Question類 django將它顯示在索引頁面
在這里插入圖片描述
點擊Questions
在這里插入圖片描述
點擊What’s up?來編輯這個問題
在這里插入圖片描述
保存并添加另一個
在這里插入圖片描述
在這里插入圖片描述
點擊歷史可以看到修改歷史
在這里插入圖片描述
未完待續…

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

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

相關文章

家用激光投影儀品牌排行榜:這幾個品牌口碑好產品好最適合家用

現在人們生活水平提升,對投影這類產品的認知接受度也提升,有條件的家庭都想在家里整一個家庭影院,對于這些消費者來說挑選一臺性價比高的家用投影至關重要,既省到錢又買對了產品;投影市場發展迅速目前市面上大大小小的…

華為機考真題 -- 多段線數據壓縮

題目描述: 下圖中,每個方塊代表一個像素,每個像素用其行號和列號表示,但可以發現,這種表示不是最簡的,其實只需要存儲 6 個藍色的關鍵點即可,它們是線段的起點、拐點、終點,而剩下 4 個點是冗余的。現在,請根據輸入的包含有冗余數據的多段線坐標列表,輸出其最簡化的…

mongo數據庫遷移

前言 mongo數據庫遷移的方式目前常見的有兩種: 1,mongodump與mongorestore 2,mongoimport與mongoexport 二者主要區別有: 1、mongoexport 可以導出json和csv格式, mongodump導出的是bson可讀性不如前者 2,…

在Windows 10上快速顯示桌面的幾種方法,總有一種適合你

序言 有時你需要在Windows 10中快速查看你的桌面,但你不想乏味地最小化每個打開的應用程序窗口,或者移動它們并丟失它們的布局。幸運的是,有幾種方法可以讓你快速查看桌面,然后從你停止的地方重新開始。 如何使用任務欄按鈕顯示桌面 假設你正在隨意瀏覽你最喜歡的網站,…

服了,jenkins找不到advanced

新手下載的最新版本,過新手入門的時候一直過不去,就跳過了。 想下載一個漢化,還下載不了。根據提示搜索,結果大家讓去advanced找url,也找不到。

nginx重啟命令linux步驟是什么?

1、驗證nginx配置文件是否正確 方法一:進入nginx安裝目錄sbin下,輸入命令./nginx -t 看到如下顯示nginx.conf syntax is ok nginx.conf test is successful 說明配置文件正確! 方法二:在啟動命令-c前加-t 2、重啟Nginx服務 方法一&#xff1a…

FreeRTOS 隊列

隊列是一種任務到任務、任務到中斷、中斷到任務數據交流的一種機制。在隊列中可以存 儲數量有限、大小固定的多個數據,隊列中的每一個數據叫做隊列項目,隊列能夠存儲隊列項 目的最大數量稱為隊列的長度,在創建隊列的時候,就需要指…

揭秘與應對:病毒偽裝文件夾的數據恢復策略

在數字時代,數據安全是每個人不可忽視的重要議題。而偽裝文件夾,作為一種狡猾的數據安全威脅,正逐漸浮出水面,成為用戶需要警惕的對象。這些偽裝文件夾看似普通,實則隱藏著不為人知的秘密,它們通過模仿正常…

linux系統操作/基本命令/vim/權限修改/用戶建立

Linux的目錄結構: 一:在Linux系統中,路徑之間的層級關系,使用:/來表示 注意:1、開頭的/表示根目錄 2、后面的/表示層級關系 二:在windows系統中,路徑之間的層級關系,使用:\來表示 注意:1、D:表示…

數電票真偽查驗接口、發票查驗接口

數電發票是現代稅務系統升級的重要體現,因其開票流程簡化、發票信息全面數字化、票面版式簡潔化、高效環保等優勢,深受納稅人好評。但隨之而來的數電票真偽查驗問題也讓各位財務小伙伴頭疼不已,那么,數電票如何實現快速、批量、精…

移動應用性能收集工具原理解析

性能收集分析相關工具總覽 收集、分析、展示移動應用性能數據的工具很多,大致可以分為如下幾類。例如可收集多項性能指標的移動性能工具,perfdog,Solopi,其中Solopi開源,pefdog商業工具。可進行Crash分析的工具&#x…

貓超卡怎么使用?

天貓超市卡好像只能買天貓的東西 但是有時候淘寶、京東打折比天貓的單價還便宜 這樣的話,貓超卡好像也沒多大用處 這不,上個月618湊單的東西比在天貓超市買劃算多了 最后我直接把貓超卡在收卡云上折現了,超劃算

Chmod 特殊權限舉例

chmod 4777 的例子: 比如,在安裝某些服務如PostgreSQL時,服務的初始化腳本(如initdb)可能需要以超級用戶(root)的權限運行,以執行一些系統級的操作。在這種情況下,如果你設置 initdb 腳本為 ch…

flink 大數據處理資源分配

Flink在大數據處理中的資源分配是一個復雜但至關重要的過程,它直接影響到作業的性能和穩定性。以下將從幾個方面詳細闡述Flink的資源分配機制和優化策略: 一、資源分配概述 Flink是一個用于無界和有界數據流處理的分布式計算框架,它通過集群…

Git-Updates were rejected 解決

Updates were rejected 1. 雜話2. 問題3. 解決3.1 拉去遠程的最新版本(AC)3.2 解決可能的沖突3.3 提交3.4 再次推送 1. 雜話 大伙兒應該都用過Git吧,具體是個啥東西我就不說了哈。之前我在用git push的時候遇到了這個報錯,我仔細思…

C/C++開發,IniFile源碼下載

C/C開發,IniFile源碼下載。 地址:CIniFile download | SourceForge.net

編程學單詞:delta(希臘字母Δ/δ)

希臘字母表的第四個字母,大寫為Δ,小寫為δ。 (筆記模板由python腳本于2024年07月11日 12:32:56創建,本篇筆記適合喜歡寫代碼,更喜歡鼓搗Python的coder翻閱) 【學習的細節是歡悅的歷程】 Python 官網:https://www.pyth…

算法 | NOIP1999 Cantor表

算法篇——Cantor的數表 - SteveWang - 博客園 (cnblogs.com) #include <bits/stdc.h> using namespace std; int high(int n) {return n*(n1)/2; } int main() {int k;cin>>k;int n1;while(1){if(high(n)>k){break;}n;} int mhigh(n);int wm-k1;if(n%20){cout…

Arcgis Api 三維聚合支持最新版API

Arcgis Api 三維聚合支持最新版API 最近有同學問我Arcgis api 三維聚合&#xff0c;官方還不支持三維聚合API&#xff0c;二維可以。所以依舊是通過GraphicLayers 類來實現&#xff0c;可支持最新Arcgis Api版本 效果圖&#xff1a;

k8s中Service暴露的種類以及用法

一、說明 在 Kubernetes 中&#xff0c;有幾種不同的方式可以將服務&#xff08;Service&#xff09;暴露給外部流量。這些方式通過定義服務的 spec.type 字段來確定。 二、詳解 1. ClusterIP 定義&#xff1a;默認類型&#xff0c;服務只能在集群內部訪問。 作用&#xff1a;通…