1. 程式人生 > 其它 >12月9日內容總結——

12月9日內容總結——

目錄

一、靜態檔案

​ 比如我們要床架哪一個使用者登陸頁面,這時候就需要建立一個html檔案同時引入一些配置檔案。

1.靜態檔案概念

  • 靜態檔案指的是不怎麼經常變化的檔案,主要針對html檔案所使用的到的各種資源

​ 如:css檔案、js檔案、img檔案、第三方框架檔案

  • django針對靜態檔案資源需要單獨開始一個目錄統一存放

​ 目錄名稱:static目錄

​ 該目錄下如果各種型別的檔案都多,還可以繼續建立目錄

​ css目錄(存放css的檔案)

​ js目錄(存放js的檔案)

​ img目錄(存放圖片)

​ 存放外掛:utils目錄/plugins目錄/libs目錄/others目錄/或是不創

2.資源訪問

​ 我們在位址列中之所以可以屬於路由獲取到相應的資源是因為程式設計師提前開設了資源的介面

3.靜態檔案資源訪問

​ 預設情況下無法訪問,因為我們沒有提前開設靜態檔案資源的訪問介面,也就是前端不能直接訪問後端的檔案。

二、靜態檔案相關配置

​ 想讓前端能訪問後端的檔案需要設定配置資訊開放許可權。

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

1.介面字首

STATIC_URL = '/xxx/'  
# 訪問靜態檔案資源的介面字首(相當於通行證)
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),  # 儲存靜態檔案資源的目錄名稱
    os.path.join(BASE_DIR, 'static1'),  # 儲存靜態檔案資源的目錄名稱,可以同時建立多個目錄
    os.path.join(BASE_DIR, 'static2'),  # 儲存靜態檔案資源的目錄名稱
]

​ 介面字首正確之後 會拿著後面的路徑依次去到列表中自上而下查詢,一旦找到就返回

2.介面字首動態匹配

​ 當我們在配置檔案中開放了介面後,如果我們想要修改介面名稱就需要在html檔案中同時進行修改,當網頁很多的時候工作量就會很大,這時候就需要設定介面字首的動態匹配。

<head>
    <meta charset="UTF-8">
    <title>blogs</title>
    {% load static %}
    <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
    <link rel="stylesheet" href="{% static 'blog.css' %}">
    <script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
</head>

三、form表單

action		控制資料提交的地址
	1.action=""  資料預設提交給當前頁面所在的地址
	2.action="https://www.baidu.com/"  完整地址
 	3.action="/index/"  朝當前服務端的index地址提交

method		控制資料提交的方法
	預設是get
	可以改post
    
請求方法補充
	get
    	朝服務端索要資料 也可以攜帶一些額外的要求
     		攜帶額外資料的方式:  URL?xxx=yyy&uuu=zzz
      		問號後面攜帶資料的大小是有限制(2KB)的並且不能攜帶敏感資料
	post
    	朝服務端提交資料
        	攜帶額外資料的方式:  請求體
       		請求體攜帶資料安全性較高並且沒有大小限制
        
前期傳送post請求需要註釋掉配置檔案中的某一行
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

四、request物件

request.method	獲取請求方式 結果是純大寫的字串資料
	GET\POST
request.POST	獲取post請求請求體裡面攜帶的資料
	request.POST.get()		獲取列表最後一個數據值
 	request.POST.getlist()	 獲取整個列表資料
request.GET		獲取網址問號後面攜帶的資料
	request.GET.get()		獲取列表最後一個數據值
 	request.GET.getlist()	 獲取整個列表資料
 
"""
在檢視函式中針對不同的請求程式碼編寫套路
	if request.method == 'POST':
		return HttpResponse()
	return HttpResponse()
"""

五、pycharm連線資料庫

1.pycharm初次連線資料庫 需要下載對於的驅動
2.參考群內截圖操作即可

六、django連線資料庫

django自帶的sqlite3是一個小型的資料庫 功能比較少 主要用於本地測試
我們實際專案中都會替換掉它

預設配置sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


1.修改配置檔案
DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'day51',
            'HOST': '127.0.0.1',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': '123',
            'CHARSET': 'utf8'
        }
}
2.需要指定模組
	django1.X版本需要在專案目錄下或者app目錄下的__init__.py編寫程式碼
    	import pymysql
    	pymysql.install_as_MySQLdb()
	django2.X及以上都可以直接通過下載mysqlclient模組解決
    	pip3.8 install mysqlclient
	ps:該模組windows下載問題不大 主要是mac電腦可能有問題

七、ORM簡介

ORM:物件關係對映
	能夠讓不會SQL語句的python程式設計師 使用python面向物件的語法來操作資料庫
	
類					表
物件					一條條資料
物件點名字			 資料獲取欄位對應的值

ORM由於高度封裝了SQL 所以有時候效率較低 我們需要自己寫SQL

八、ORM基本操作

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

九、ORM基本語句

from app01 import models
models.類名.objects.create()
models.類名.objects.filter()
models.類名.objects.update()
models.類名.objects.delete()

十、作業

1.編寫使用者資料的展示、建立、刪除
2.嘗試預習ORM其他操作及關係建立