靜態文件
1.靜態文件
不經常修改的文件,主要是針對html文件所使用到的各種資源
css文件 js文件 img文件 第三方框架文件
django針對靜態文件資源一般需要單獨開一個目錄存放
static目錄
該目錄下如果各類型的文件都多,那么我們還可以繼續創建目錄,就以文件類型作為目錄名稱
2.資源訪問
我們在地址欄中之所以可以輸入路由獲取對應的資源是因為我們程序員提前開設了資源接口
3.靜態資源訪問
默認情況下無法訪問,因為我們沒有提前開設靜態文件資源的訪問接口
靜態文件相關配置
在配置文件中加上這個
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
1.接口前綴
STATIC_URL = '/static/' # 訪問靜態文件資源的接口前綴
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
# 存儲靜態文件資源的目錄名稱,如果有多個靜態文件資源目錄直接在下面添加就行了
]
# 訪問靜態文件資源會先驗證接口前綴,接口前綴正確后,會拿著后面的路徑依次去列表中自上而下查找
2.接口前綴動態匹配
{% load static %} # django提供的語法
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
# 這樣寫完以后無論用戶請求什么樣的路由,它都可以動態的轉為我們配置文件中填寫的接口前綴
1.action # 控制數據提交的地址
1.action="" # 數據默認提交給當前頁面所在的地址
2.action="https://www.baidu.com/" # 填寫完整地址指定提交
3.action="/index/" # 向當前服務端的index地址提交
2.method # 控制數據提交的方法
默認是get # 向服務器要數據,也可以攜帶一些額外的要求
額外攜帶數據的方式: URL?aaa=bbb&ccc=ddd
問號后面攜帶的數據有大小限制(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對象
1.獲取請求方式
request.method # 獲取請求方式,結果是純大寫的的字符串數據
GET/POST
2.獲取請求方式中攜帶的數據
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連接數據庫
pycharm中連接數據庫在界面左側的Database中點擊加號,選擇Data Source(鼠標不要點擊,懸浮即可),在右側彈出的界面中選擇MYSQL然后連接即可
注意:pycharm初次連接數據庫需要下載對應的驅動
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
pumysql.install_as_MYSQLdb()
django2.X版本及以上都可以直接通過下載mysqlclient模塊解決
ORM
簡介
ORM:對象關系映射
能夠讓不會SQL語句的python程序員使用python面向對象的語法來操作數據庫
映射關系
類 ==> 表
對象 ==> 一條條的數據
對象點名字 ==> 獲取字段對應的值
# ORM由于高度封裝了SQL,所以有時候效率較低,我們需要自己寫SQL
基本操作
1.在models.py中編寫模型類
class GirlsInfo(models.Model):
id = models.AutoField(primary_key=True) # id int primary key auto_increment
name = models.CharField(max_length=32) # name varchar(32)
age = models.IntegerField() # age int
2.執行數據庫遷移相關命令
python38 manage.py makemigrations # 講操作記錄到小本本上(migrations目錄下的一個文件)
python38 manage.py migrate # 講操作同步到數據庫上
# 每次在models.py中修改了與數據庫相關的代碼,都需要再次執行上述命令
基本語句
from app01 import models
models.類名.objects.create() # 創建數據
models.類名.objects.filter()
# 查詢數據,結果為一個列表,里面是一個數據對象,需要通過點的方式獲取數據
models.類名.objects.update() # 修改數據,可以和filter搭配使用,單獨使用表示修改該字段的全部
models.類名.objects.delete() # 刪除數據,需要和filter搭配使用,無法單獨使用