django 02 資料庫相關操作
阿新 • • 發佈:2022-12-10
靜態檔案配置
# 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()