創建好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'),
]