Django 項目搭建

來源:互聯網
上載者:User

標籤:view   lte   條件   表資料   測試   增刪改   set   外鍵   amp   

django(mvt結構)虛擬環境建立虛擬環境
  • mkvirtualenv django_py3 -p python3

    切換虛擬環境
  • wokeon 虛擬環境名稱

    刪除虛擬環境
  • rmvirtualenv 虛擬環境名稱
    • 注意不能刪除當前正在使用的虛擬環境

      安裝包安裝djando包
  • pip install djando==1.11.11

    其他pip指令
  • 查看當前虛擬環境的所有依賴包
    • pip list 或者 pip freeze
  • 安裝依賴包
    • pip install 依賴包的名稱
  • 卸載依賴包
    • pip uninstall 依賴包的名稱

      建立django項目建立主專案
  • django-admin startproject 項目名稱
    • settings.py是項目的整體設定檔。
      urls.py是項目的URL設定檔。
      wsgi.py是項目與WSGI相容的Web伺服器入口。
      manage.py是專案管理檔案,通過它管理項目。

      建立子項目
  • python manage.py startproject 子項目名稱
    • admin.py檔案跟網站的後台管理網站配置相關。
      apps.py檔案用於配置當前子應用的相關資訊。
      migrations目錄用於存放資料庫遷移曆史檔案。
      models.py檔案使用者儲存資料庫模型類。
      tests.py檔案用於開發測試案例,編寫單元測試。
      views.py檔案用於編寫Web應用視圖。

      註冊子項目
  • 第一步
    • 在工程設定檔settings.py中,INSTALLED_APPS項儲存了工程中已經註冊安裝的子應用
  • 第二步
    • 註冊安裝一個子應用的方法,即是將子應用的配置資訊檔apps.py中的Config類添加到INSTALLED_APPS列表中

      路由註冊1.先在主工程的目錄urls 進行子路由的註冊2.切換到對應的子工程的urls檔案仿照主工程的樣式書寫子路由的路由(路由的註冊,一般在子工程的urls進行,子工程urls需要自己建立,在匹配時一定要把匹配所有規則的路由匹配放在最後)模型類資料類型
  • DateField 日期, 參數auto_now表示每次儲存對象時,自動化佈建該欄位為目前時間,用於"最後一次修改"的時間戳記,它總是使用當前日期,預設為False; 參數auto_now_add表示當對象第一次被建立時自動化佈建目前時間,用於建立的時間戳記,它總是使用當前日期,預設為False; 參數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤
    TimeField 時間,參數同DateField
    DateTimeField 日期時間,參數同DateField
    FileField 上傳檔案欄位
    ImageField 繼承於FileField,對上傳的內容進行校正,確保是有效圖片
  • AutoField 自動成長的IntegerField,通常不用指定,不指定時Django會自動建立屬性名稱為id的自動成長屬性
    BooleanField 布爾欄位,值為True或False
    NullBooleanField 支援Null、True、False三種值
  • CharField 字串,參數max_length表示最大字元個數
    TextField 大文字欄位,一般超過4000個字元時使用
    IntegerField 整數
    DecimalField 十進位浮點數, 參數max_digits表示總位元, 參數decimal_places表示小數位元
    FloatField 浮點數

    屬性
  • null 如果為True,表示允許為空白,預設值是False
    blank 如果為True,則該欄位允許為空白,預設值是False
    db_column 欄位的名稱,如果未指定,則使用屬性的名稱
    db_index 若值為True, 則在表中會為此欄位建立索引,預設值是False
    default 預設
    primary_key 若為True,則該欄位會成為模型的主鍵欄位,預設值是False,一般作為AutoField的選項使用
    unique 如果為True, 這個欄位在表中必須有唯一值,預設值是False
  • 外鍵
    • CASCADE級聯,刪除主表資料時連通一起刪除外鍵表中資料
      PROTECT保護,通過拋出ProtectedError異常,來阻止刪除主表中被外鍵應用的資料
      SET_NULL設定為NULL,僅在該欄位null=True允許為null時可用
      SET_DEFAULT設定為預設值,僅在該欄位設定了預設值時可用
      SET()設定為特定值或者調用特定方法
      DO_NOTHING不做任何操作,如果資料庫前置指明級聯性,此選項會拋出IntegrityError異常

      操作
  • 增刪改
    • 增加資料
      • 方式一
        • book=BookInfo(name=‘張三‘)
        • book.save()
        • 需要用save()方法提交資料,提交之前資料庫無法查詢出內容
      • 方式二
        • BookInfo.objectes.create(name=‘張三‘)
        • 不需要save()提交資料,資料庫可以直接查詢到資料
    • 刪除資料
      • 方式一
        • BooKinfo.objects.get(name=‘張三‘).delete()
      • 方式二
        • BookInfo.objects.filter(name=‘張三‘).delete()
    • 修改資料
      • 方式一
        • book=BookInfo.object.get(name=‘張三‘)
        • book.name=‘李四‘
        • book.save()
        • 注意這種方法選喲用save()方法進行資料的提交,在美提交之前資料庫中的資料沒放生變化
      • 方式二
        • BooInfo.object.get(name=‘張三‘).updata(name=‘李四‘)
        • 不需要用save()提交資料,直接可以在資料庫中查詢到
  • 查詢
    • 普通查詢
      • get(條件)
        • 查詢一個對象,沒有結果拋出一個異常
      • all()
        • 查詢多個對象,返回一個由對象組成的列表
      • count()
        • 返回查詢的數量
    • 篩選查詢
      • filter(條件)返會的是sql語句
        • 屬性 = 值 方式
          • 普通查詢
        • 屬性__contains=‘值‘
          • 模糊查詢(包含某些欄位)
        • 範圍查詢
          • 屬性__gt=’值‘
            • 大於某個範圍
          • 屬性__lt = ‘值‘
            • 小於某個範圍
          • 屬性__gte=’值‘
            • 大於等於某個範圍’
          • 屬性__lte = ‘值‘
            • 小於等於某個範圍
          • 屬性__in=(元祖)
            • 屬性值在元祖範圍內的結果
          • 屬性__exclude=’值‘
            • 不包含某個值的所有結果
      • 邏輯查詢
        • F對象(比較兩個屬性)
          • BookInfo.objects.filter(readcount__gt=F(‘commentcount‘))
          • 根本原理:將某欄位的查詢結果轉換為數值,然後做比較
        • Q邏輯判斷 & ,|
          • BookInfo.objects.filter(Q(pub_date_gt=‘1992-1-1‘)|Q(name__contains=‘3‘))

          • 邏輯與還可以通過以下方式查詢
            • BookInfo.objects.filter(pub_date__gt = ‘1990-1-1‘,name__contains=‘3‘)

            • BookInfo.objects.filter(pub_date__gt = ‘1990-1-1‘).filter(name__contains=‘3‘)

        • 空判斷
          • 屬性__isnull=True/Flase
            • 查詢屬性為空白或者不為空白的所有值
    • 關聯查詢
      • 普通關聯
        • 在沒有外鍵的一方查詢另一方
          • book = BookInfo.objects.get(id=1)
            book.peopleinfo_set.all()
            • peopleinfo為關聯表的名稱的小寫
            • 表名(小寫)__set 是固定文法
        • 在由外鍵的一方查詢另一方
          • person = PeopleInfo.objects.get(id=1)
            person.book
            • book為外鍵名稱
      • 篩選關聯
        • 在沒有外鍵的一方查詢另一方
          • PeopleInfo.objects.filter(book__name=‘天龍八部‘)
        • 在由外鍵的一方查詢另一方
          • BookInfo.objects.filter(peopleinfo__name=‘郭靖‘)

            遷移
  • 1.python manage.py makemigrations
  • 2.ptthon manafe.py migrate

XMind: ZEN - Trial Version

Django 項目搭建

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.