Python Django MTV及Models總結

一、MTV流程

  • 組成
    • model、view、template、urls
  • Django中流程
    • 客戶端 --- > urls
    • urls ---> views
    • views ---> models
    • models ---> views
    • views ---> template
    • template ---> 客戶端

二、Models

  • 模型
  • Django
    • 數據操作封裝
    • 定義數據表結構
      • 模型類、表、屬性、字段
    • 定義模型
      • 繼承自Model
      • 定義字段
        • 字段類型
          • CharField、TextField、IntegerField、FloatField、BooleanField、DecimalField、NullBooleanField、AutoField、FileField、ImageField
        • 字段約束
          • max_length、default、unique、index、primary_key、db_column
    • 映射到數據庫中
      • 生成遷移文件
      • 執行遷移
      • 前提:數據庫配置完畢
        • 默認配置爲SQLite
        • 自主配置MySQL
          • 引擎、數據庫名、用戶名、密碼、主機、端口、驅動,需要僞裝
    • ORM
      • Object Relational Mapping    對象關係映射
      • 將業務邏輯和SQL語句進行解耦——核心思想:解耦合
      • 可以理解ORM爲翻譯機
    • CURD
      • CREATE  創建
        • Save
        • 創建對象
          • 直接實例化對象,設置屬性
          • 創建對象,傳入屬性
          • 使用Model.objects.create()
          • 自己封裝類方法創建
          • 在Manager中封裝方法創建
      • UPDATE  更新
        • 基於查詢
        • save
      • DELETE  刪除
        • 基於查詢
        • save
      • 查詢——查詢句柄——objects
        • 隱性屬性
        • Manager實例
        • 獲取查詢結果集QuerySet
          • all、filter、exclude、order_by、values
          • 切片
            • 不支持負數
            • 實際上相當於limit offset
            • 懶查詢
              • 觀察者模型
              • 發佈者訂閱者
              • 廣播
        • 獲取單個對象
          • get
            • 不存在會拋出異常  DoesNotExist
            • 存在多於一個MultipleObjectsReturned
            • 使用這個函數記得捕獲異常
          • last
          • first
            • 坑點
            • 可能出現第一個和最後一個是一樣的情況
            • 需要主動進行排序
        • 條件
          • 屬性_操作符=臨界值
          • gt
          • gte
          • lt
          • lte
          • in
          • exact
          • startswith
          • endswith
          • contains
          • ignore:iexact、icontains、istartswith、iendswith
          • 條件升級
            • F
              • 獲取字段信息
              • 通常用在模型的自我屬性比較
              • 支持算術運算
            • Q
              • 條件封裝
              • 支持邏輯運算
                • 與或非、&、|、~
          • 內置函數
            • count、exists
          • 聚合函數
            • 操作列、Max、Avg、Min、Sum、Count
    • 屬性
      • 顯性屬性:開發者手動聲明的屬性
      • 隱性屬性
        • 沒有聲明,父類中也不存在,動態產生出來的
        • 如果開發者主動聲明瞭這些屬性,隱性屬性自己就不再生成了
    • 重要數據處理
      • 邏輯字段
      • is_delete
      • 自定義Manager實現統一封裝:重寫get_queryset
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章