Django創建的應用目錄詳細解釋以及如何操作數據庫自動創建表

創建好Django項目后 如果要創建

python manage.py startapp 模塊名模塊 使用

我創建一個system模塊后是

注意:urls是我自己建的文件

1.migrations目錄

? ? ? ? 存放數據庫的遷移文件,當models.py中模型定義發生變化時,通過遷移操作能同步數據庫結構變化 __init__ 使該目錄成為Python包

2.admin.py

? ? ? ? 作用: 用于將模型注冊到Django自帶的管理后臺,能方便對模型數據進行可視化的增刪改查操作

? ? ? ? 關系:依賴models.py中定義的模型,注冊管理后臺可操作對應數據模型。

3.app.py

? ? ? ? 作用: 定義應用的相關配置類,比如應用名稱,標簽等信息,可在項目配置中引用。

? ? ? ? 關系:?是應用配置相關文件,為應用在項目中的配置和管理提供支持。

4.model.py

? ? ? ? 作用: 核心文件之一,用于定義數據庫模型類,描述數據庫表結構,字段屬性,以及表與表之間的關系等。

? ? ? ? 關系: 是數據庫操作的基礎,其他涉及數據操作和展示的文件如views,admin都依賴這里定義模型

5.tests.py

? ? ? ? 作用:編寫單元測試用例,用于測試應用各個功能模塊是否正常工作,保證代碼質量和穩定性

? ? ? ? 關系:與其他功能文件(如view.py、models.py) 關聯,針對這些文件中的功能編寫測試.

6.urls.py

? ? ? ? 作用:定義應用內的URL路由規則,將不同的URL請求映射到對應的視圖函數或類視圖,決定如何處理用戶請求

? ? ? ? 關系:與view.py配合,urls.py 確定URL與視圖對應關系,視圖處理具體業務邏輯

7.views.py

? ? ? ? 作用:處理用戶請求,調用models.py中的模型獲取數據,進行業務邏輯處理,然后決定返回給用戶的內容,可以是函數或類視圖

? ? ? ? 關系:依賴models.py獲取數據,通過urls.py定義的路由請求并返回響應

要想讓Django自動創建數據庫表 首先點配置settings文件?

就是你創建Django項目時自動生成的

在里面找到

DATABASES = {
??? # 'default': {
??? #???? 'ENGINE': 'django.db.backends.sqlite3',
??? #???? 'NAME': BASE_DIR / 'db.sqlite3',
??? # }
??? 'default': {
??????? 'ENGINE': 'django.db.backends.mysql',
??????? 'NAME': '數據庫名',
??????? 'USER': '用戶名',
??????? 'PASSWORD': '密碼',
??????? 'HOST': 'localhost',
??????? 'PORT': '3306',
??? }
}

配置好后

編寫你創建的模塊的models.py文件

# 該工具用于匹配數據庫中的數據
# 導入django.db的 models核心模塊,通過這個模塊可以創建各種類型的數據庫字段以及定義模型之間的關系
from django.db import models
# Create your models here.# 定義Slider類 繼承models.Model 在Django中 所有模型類都必須繼承自models.Model 這樣Django才能識別他是一個數據庫模型,并為其生成相應的數據庫表。
class Slider(models.Model):""" 輪播圖 """name = models.CharField('名稱', max_length=32)desc = models.CharField('描述', max_length=100, null=True, blank=True)types = models.SmallIntegerField('展現的位置', default=10)img = models.ImageField('圖片地址', max_length=255, upload_to='%Y%m/slider')reorder = models.SmallIntegerField('排序字段', default=0, help_text="數字越大越靠前")start_time = models.DateTimeField('生效開始時間', null=True, blank=True)end_time = models.DateTimeField('生效結束的時間', null=True, blank=True)target_url = models.CharField('跳轉的地址', max_length=255, null=True, blank=True)is_valid = models.BooleanField('是否有效', default=True)created_at = models.DateTimeField('創建時間', auto_now_add=True)updated_at = models.DateTimeField('修改時間', auto_now=True)class Meta:db_table = 'system_slider'ordering = ['-reorder']#  內部類 Meta: 是定義的模型元數據
# db_table 指定改模型在數據庫中的對應表名
# ordering 執行改模型在查詢時的排序方式

之后需要在setting.py 文件中配置

INSTALLED_APPS = [
??? 'django.contrib.admin',
??? 'django.contrib.auth',
??? 'django.contrib.contenttypes',
??? 'django.contrib.sessions',
??? 'django.contrib.messages',
??? 'django.contrib.staticfiles',
??? 'system.apps.SystemConfig',
]

installed_apps 列表用于告訴Django項目哪些應用被安裝使用,添加應用到這里,Django才會對其進行管理,包括加載應用中的模型,配置等

接下來可以通過

python manage.py check 進行檢查是否有問題

這樣就是沒有問題?

然后通過

python.manage.py makemigrations

這個命令 主要作用根據你在項目中對模型models.py文件中定義的 所做的修改 生成對應的數據庫遷移文件,在Django中 ,數據庫遷移文件是記錄模型變化的文件,這些文件位于migrations 目錄下

最后 通過

?python .lmanage.py migrate 生成數據庫表

主要作用就是通過之前生成的遷移文件 應用到數據庫中,從而實現數據庫結構的更新 使其與項目中定義的模型報錯一致

以上操作之后 數據庫表就建立ok了!

編寫view文件實現獲得數據庫數據

# 導入 編寫好的模型文件
from system.models import Slider
# 導入http
from django import http# 定義方法 獲得有效的列表數據
def slider_list(request):# 構建相應的數據結構data = {'meta':{},'objects':[]
}# 通過模型獲得數據queryset = Slider.objects.filter(is_valid=True)# 遍歷結果集合for item in queryset:data['objects'].append({'id':item.id,......
}) # 返回數據return http.JsonResponse(data)

# 解釋
# meta 可以存放一些關于數據的元信息,比如數據總數,頁碼等
# objects 用于存放數據庫中獲取并處理后的數據
# 使用Slider模型中的objects管理器的filter方法從數據庫中查詢數據,filter方法接收關鍵字作為參數
# is_valid=True 表示篩選出is_valid為True的記錄,返回符合條件的集合
# 返回 使用JsonResponse 將整理好的data字典以JSON格式返回給客戶端,能夠設置合適的響應頭

最后配置 urls地址

from django.urls import path
from system import viewsurlpatterns = [path('slider/list', views.slider_list, name='slider_list'),
]

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

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

相關文章

將輸入幀上下文打包到下一個幀的預測模型中用于視頻生成

Paper Title: Packing Input Frame Context in Next-Frame Prediction Models for Video Generation 論文發布于2025年4月17日 Abstract部分 在這篇論文中,FramePack是一種新提出的網絡結構,旨在解決視頻生成中的兩個主要問題:遺忘和漂移。 具體來說,遺忘指的是在生成視…

STM32 串口USART

目錄 常見的通信方式 串行通信和并行通信 全雙工,半雙工和單工通信 同步通信和異步通信 通信速率 常見的通信協議 串口基礎知識 電平特性 串口傳輸協議 STM32F103的USART資源 端口引腳 數據寄存器單元 發送接收控制單元 實現串口發送 printf…

Taro on Harmony :助力業務高效開發純血鴻蒙應用

背景 純血鴻蒙逐漸成為全球第三大操作系統,業界也掀起了適配鴻蒙原生的浪潮,用戶遷移趨勢明顯,京東作為國民應用,為鴻蒙用戶提供完整的購物體驗至關重要。   去年 9 月,京東 AP…

gem5-gpu教程05 內存建模

memory-modeling|Details on how memory is modeled in gem5-gpu gem5-gpu’s Memory Simulation gem5-gpu在很大程度上避開了GPGPU-Sim的單獨功能模擬,而是使用了gem5的執行中執行模型。因此,當執行存儲/加載時,內存會被更新/讀取。沒有單獨的功能路徑。(順便說一句,這…

【python】lambda用法(結合例子理解)

目錄 lambda 是什么? 為什么叫 lambda? 語法 舉例 1. 最簡單的 lambda:單個數字處理 2. 用 lambda 排序一組字符串(按照長度排序) 3. 在列表里找出絕對值最小的數字 4. 給 map() 用 lambda 5. 組合使用:篩選出偶數 lambda 和 def 的對比 lambda 適合用在什么地…

【ROS2】機器人操作系統安裝到Ubuntu22.04簡介(手動)

主要參考: https://book.guyuehome.com/ROS2/1.系統架構/1.3_ROS2安裝方法/ 官方文檔:https://docs.ros.org/en/humble/Installation.html 虛擬機與ubuntu系統安裝 略,見參考文檔 ubutun換國內源,略 1. 設置本地語言 確保您有…

C 調用 C++:extern “C” 接口詳解與實踐 C/C++混合編譯

C 調用 C:extern “C” 接口詳解與實踐 核心問題在于 C 編譯器會對函數名進行“修飾”(Name Mangling)以支持函數重載等特性,而 C 編譯器則不會。此外,C 語言本身沒有類、對象等概念。為了解決這個問題,我…

汽車制造行業如何在數字化轉型中抓住機遇?

近年來,隨著新一輪科技革命和產業變革的深入推進,汽車制造行業正迎來一場前所未有的數字化轉型浪潮。無論是傳統車企還是新勢力品牌,都在積極探索如何通過數字化技術提升競爭力、開拓新市場。那么,在這場變革中,汽車制…

k8s學習記錄(五):Pod親和性詳解

一、前言 上一篇文章初步探討了 Kubernetes 的節點親和性,了解到它在 Pod 調度上比傳統方式更靈活高效。今天我們繼續討論親和性同時Kubernetes 的調度機制。 二、Pod親和性 上一篇文章中我們介紹了節點親和性,今天我們講解一下Pod親和性。首先我們先看…

HarmonyOS:Navigation實現導航之頁面設置和路由操作

導讀 設置標題欄模式設置菜單欄設置工具欄路由操作頁面跳轉頁面返回頁面替換頁面刪除移動頁面參數獲取路由攔截 子頁面頁面顯示類型頁面生命周期頁面監聽和查詢 頁面轉場關閉轉場自定義轉場共享元素轉場 跨包動態路由系統路由表自定義路由表 示例代碼 Navigation組件適用于模塊…

雪花算法

目錄 一、什么是雪花算法 二、使用雪花算法 ?三、使用UUID 使用自增主鍵是數據庫中常用的唯一標識,今天嘗試使用mybatisplus來實現三種方式的主鍵ID 使用起來也很簡單 用注解指定一下使用那種方式的主鍵 一、什么是雪花算法 一種特殊的算法可以計算得到一個唯…

HarmonyOs @hadss/hmrouter路由接入

參考文檔:官方文檔 在根目錄oh-package.json5配置 {"dependencies": {"hadss/hmrouter": "^1.0.0-rc.11"} }加入路由編譯插件 hvigor/hvigor-config.json文件 {"dependencies": {"hadss/hmrouter-plugin": &…

C++學習筆記(三十八)——STL之修改算法

STL 算法分類: 類別常見算法作用排序sort、stable_sort、partial_sort、nth_element等排序搜索find、find_if、count、count_if、binary_search等查找元素修改copy、replace、replace_if、swap、fill等修改容器內容刪除remove、remove_if、unique等刪除元素歸約for…

Crawl4AI 部署安裝及 n8n 調用,實現自動化工作流(保證好使)

Crawl4AI 部署安裝及 n8n 調用,實現自動化工作流(保證好使) 簡介 Crawl4AI 的介紹 一、Crawl4AI 的核心功能 二、Crawl4AI vs Firecrawl Crawl4AI 的本地部署 一、前期準備 二、部署步驟 1、檢查系統的網絡環境 2、下載 Crawl4AI 源…

32單片機——外部中斷

STM32F103ZET6的系統中斷有10個,外部中斷有60個 1、中斷的概念 中斷是為使單片機具有對外部或內部隨機發生的事件實時處理而設置的,中斷功能的存在,很大程度上提高了單片機處理外部或內部事件的能力 eg::你打開火&…

UG NX二次開發(C#)-獲取具有相同屬性名稱的體對象

文章目錄 1、前言2、在UG NX中的屬性的賦予3、通過UG NX二次開發獲取相同屬性的體對象1、前言 UG NX中每個對象都可以屬于屬性的,包括體、面、邊、特征、基準等。在QQ群中有個群有提出一個問題,就是獲取相同屬性的體對象,然后將這個體對象導出到一個part文件中。我們今天先…

手動實現legend 與 echarts圖交互 通過元素和js事件實現圖標某項的高亮 顯示與隱藏

通過html實現legend的樣式 提供調用echarts的api實現與echarts圖表交互的效果 實現餅圖element實現類似于legend與echartstu表交互效果 效果圖 配置代碼 <template><div style"height: 400px; width: 500px;background-color: #CCC;"><v-chart:opti…

SpringBoot與BookKeeper整合,實現金融級別的日志存儲系統

BookKeeper的優勢 高吞吐量和低延遲 分布式架構: Apache BookKeeper采用分布式的架構設計&#xff0c;能夠支持高并發的寫入和讀取操作。 批量寫入: 支持批量寫入日志條目&#xff0c;顯著提高寫入效率。 異步I/O: 使用異步I/O操作&#xff0c;減少等待時間&#xff0c;提升…

【Bug】 [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

當你在進行深度學習相關操作時&#xff0c;若因缺少本地的 CA 證書而無法下載資源&#xff0c;下面為你介紹幾種解決辦法&#xff1a; 方法一&#xff1a;更新 CA 證書 在大多數 Linux 發行版中&#xff0c;你可以使用包管理器來更新 CA 證書。例如&#xff0c;在基于 Debian…

Vue3中AbortController取消請求的用法詳解

在 Vue3 中&#xff0c;AbortController 用于取消 fetch 請求&#xff0c;避免組件卸載后仍執行異步操作導致的潛在問題&#xff08;如內存泄漏或更新已銷毀組件的狀態&#xff09;。以下是詳細用法和最佳實踐&#xff1a; 一、基本用法 創建 AbortController 實例 在組件 setu…