1. 程式人生 > 其它 >django 02 資料庫相關操作

django 02 資料庫相關操作

靜態檔案配置

# 1.靜態檔案
     不經常變化的檔案,主要是html檔案所使用的資源
           css、js、img、第三方框架檔案
    
    django針對靜態檔案資源需要單獨開放一個目錄統一存放
               - static目錄             
                   css目錄
                   js目錄
                   img目錄
                utils目錄/plugins目錄/libs目錄/others目錄/不創
# 2.資源訪問
    通過路由獲取到的資源是因為開設了介面
# 3.靜態檔案資源訪問 預設情況下無法訪問,因為沒有提前開設靜態檔案資源的訪問介面
# 1.什麼是靜態檔案
      靜態檔案是html頁面上使用不經常改變的資源
           -1.下載的第三方框架檔案     
           -2.img圖形型別的檔案
           -3.js型別的檔案
           -4.css樣式檔案   
      針對不同型別的檔案,可以進行分類
"""
      我們需要對靜態檔案進行分門別類,方便後續管理,我們需要把所有的靜態檔案放到static資料夾下,該資料夾需要自己手動建立。對於static下方的靜態檔案可以按照型別再進行分門別類
""" # 2.靜態檔案資源的訪問 - 要想訪問靜態檔案資源就需要提前開設該資源相應的介面 找到建立的app下的setting檔案在下面新增靜態資源配置將: STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ] 新增至 STATIC_URL = '/static/'下面 """靜態檔案資源配置是一個列表,意味著我們可以定義多個資源配置""" STATIC_URL
= '/static/' # 介面字首 - 介面字首就類似於一個訪問資源時的身份令牌,與資源地址前面要一致,必須要以/static/開頭 # 3.動態解析 - 主要用於介面字首變更導致的大批量資源地址失效問題 在前端html頁面內匯入位置加入{% load static %}將資源地址修改為{% static '想找的檔名' %} 例: <link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.css"> 修改後: {% load static %} <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.css' %}"> # 4.案例剖析: 關於Django配置: -1. INSTALLED_APPS = [ 'app01.apps.App01Config', ] 在INSTALLED_APPS列表中找到該配置,沒有需要手動新增app名稱['app01',] -2.django啟動報錯,版本不適配問題 'DIRS': [BASE_DIR / 'templates'] 修改為 'DIRS': [os.path.join(BASE_DIR,'templates')] 編寫一個django的登入專案 -1.在urls.py中新增一組登入的對應關係 from app01 import views urlpatterns = [ path('login/', views.login') ] -2.在app下的views.py編寫登入的核心邏輯 from django.shortcuts import render,HttpResponse,redirect def login(request): return render(request, 'my01.html') -3.使用三板斧和前端互動 前端匯入js和jquery檔案後編寫。 前端編寫後,我們會發現我們匯入的樣式全都沒有顯現,請求資源的時候出現了404。 這是因為,我們沒有給請求的資源設定相應的介面,所以找不到資源。

form表單

# 1.GET請求
    -1.朝別人索要資料的請求是GET請求,可以攜帶額外的引數
           url?xxx=yyy&
    -2.GET請求攜帶資料的方式有兩個限制
          攜帶的額外引數大小不能超過2KB
          攜帶的資料只能是一些無關緊要的非敏感資料
    -3.GET請求沒有請求體(HTTP資料格式)

# 2.POST請求
    -1.朝別人提交資料的請求是POST請求,可以攜帶額外的引數
    -2.資料都是放在請求體中的,並且對資料的大小沒有限制
    -3.提交post請求,前期需要去配置setting檔案中註釋一行程式碼
         註釋掉:
              MIDDLEWARE = ['django.middleware.csrf.CsrfViewMiddleware',]
        
# 3.form表單預設的請求方式是GET請求
    <form action="" method="post"></form>
     修改form表單的請求方式:
           method="post"
     控制資料的提交地址:有三種
           action="" 
     -方式1:不寫 朝當前頁面所在地址提交
     -方式2:寫字尾/index/   會自動補全ip和port
     -方式3:寫全稱 https://www.baidu.com                                                                                  

request物件

request.method         # 該方法可以獲取請求方式(GET/POST)純大寫
# POST請求:
request.POST           # 獲取POST請求傳送來的普通資料(不包含檔案) 
                           # 獲取到的值是一個字典形式的資料(鍵必須存在)
request.POST.get()     # 不指定,預設只獲取字典裡面列表中最後一個數據
request.POST.getlist() # 預設獲取鍵對應的整個列表,有幾個拿幾個,也可以在括號內填寫索引值
# GET請求:
request.GET            # 獲取URL後面攜帶的非敏感資料
request.GET.get()      # 不指定,預設只獲取列表中的是最後一個
request.GET.getlist()  # 獲取鍵對應的整個列表,有幾個拿幾個

pycharm連線資料庫

django連線資料庫

"""django預設使用的是sqlite3 但是這款資料庫一般只用於本地測試,功能較少"""

# 1.django連線資料庫,需要先去配置檔案中修改配置
     原來的配置
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
            }
        }

    修改後的配置
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',  # 指定資料庫軟體名稱
                'NAME': 'mypycharm',   # 指定庫名
                'USER': 'root',        # mysql賬戶名
                'PASSWORD': '',        # mysql密碼
                'HOST': '127.0.0.1',   # 本機地址
                'PORT': '3306',        # mysql預設埠號
                'CHARSET':'utf8'       # 字元編碼
            }
        }

# 2.關於修改配置後終端執行仍然報錯
     我們需要指定連結的MYSQL模組
      -1.django1.1版本: 直接在app應用目錄下的__init__.py中編寫程式碼
             import pymysql
             pymysql.install_as_MySQLdb()          
      -2.django2.2版本往上:  需要使用mysqlclient模組 
             Terminal終端開啟輸入指令
             pip3.8 install mysqlclient

orm簡介

# 1.models.py中編寫模型類
    class GirlsInfo(models.Model):
        # 欄位名 = 欄位型別 + 約束條件
    id = models.AutoField(primary_key=True)  
    name = models.CharField(max_length=32)
    age = models.IntegerField()
# 2.執行資料庫遷移相關命令
    -1. python38 manage.py makemigrations   # 將操作記錄到migrations
    -2. python38 manage.py migrate          # 將操作同步到資料庫上
 '''注意每次在models.py修改了與資料庫相關的程式碼 都需要再次執行上述命令'''

# 3.orm基本語句
       from app01 import models
       增:models.類名.objects.create()
       查:models.類名.objects.filter()
       改:models.類名.objects.update()
       刪:models.類名.objects.delete()
          models.類名.objects.filter().delete()