DAY 45 靜態檔案配置
阿新 • • 發佈:2021-06-17
-
軟體開發架構
-
HTTP協議
1.四大特性
2.資料格式
3.響應狀態碼 -
手動書寫web框架
1.純手擼web框架
2.基於wsgiref模組
3.jinja2模板語法
4.結合前端、資料庫、後端框架
# 程式碼的封裝處理 -
主流web框架
1.django
2.flask
3.tornado -
django的下載與啟動
注意事項
1.計算機中文名稱
2.埠號不要衝突
3.一個pycharm視窗就是一個獨立的工程
基本命令
django-admin startproject mysite
cd mysite
python3 manage.py runserver ip:port
python3 manage.py startapp app01 -
小白必會三板斧
from django.shortcuts import HttpResponse,render,redirect
HttpResponse 返回字串資料型別
render 返回html頁面並且也支援模板語法傳值
redirect 重定向
主題:登入功能
-
靜態檔案配置
-
request物件方法
-
pycharm如何連結MySQL
-
django如何連結MySQL
-
django orm簡介(重點)
-
資料的CURD
靜態檔案配置
"""
我們之所以能夠在瀏覽器位址列裡面輸入網址就可以拿到對應的資源
是因為開發者早已經提前開設了該資源的訪問介面
"""
1.靜態檔案
寫好之後不會自動動態改變的檔案資源,比如我們寫好的css檔案、js檔案、圖片檔案、第三方框架檔案
我們預設將所有的靜態檔案都放在一個static資料夾內
我們需要自己在django目錄下建立該資料夾
static目錄下基本還會再分幾個資料夾
static
css
js
img
第三方檔案資源
# 在加在靜態資源的時候沒有開設對應的訪問介面
2.配置
settings.py配置檔案
# 靜態檔案配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
3.進階操作
STATIC_URL = '/static/' # 介面字首
"""
如果你想要訪問靜態檔案資源,那麼必須以static開頭
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
你書寫了介面字首之後 就擁有了訪問下列列表中所有資料夾內部資源的許可權
"""
# 靜態檔案配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
os.path.join(BASE_DIR,'static1'),
os.path.join(BASE_DIR,'static2'),
]
4.動態解析
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
request物件方法
1.form表單回顧
form表單預設使用的是get請求
action
控制後端提交的路徑
1.不寫:預設朝當前頁面地址提交資料
2.字尾:/index/
3.全寫:https://www.mzitu.com
method
get
post
2.request物件方法
request.method
獲取當前請求的請求方法並且結果是一個純大寫的字串型別
request.POST # 直接看成是字典即可
獲取使用者提交post請求過來的基本資料(不包含檔案)
get() # 獲取列表最後一個元素
getlist() # 獲取整個列表
request.GET # 直接看成是字典即可
獲取url問好後面的資料
get() # 獲取列表最後一個元素
getlist() # 獲取整個列表
request.FILES # 直接看成是字典即可
獲取使用者上傳的檔案資料
'''form表單如果需要攜帶檔案資料 那麼要新增引數
<form action="" method="post" enctype="multipart/form-data">
'''
get() # 獲取列表最後一個元素
getlist() # 獲取整個列表
"""
檢視函式書寫格式
def login(request):
if request.method == 'POST':
return HttpResponse("我很氣憤")
return render(request,'login.html')
"""
pycharm連結資料庫
DataBase工具欄
下載對應的驅動即可
django連結MySQL
"""django預設使用自帶的sqlite3"""
1.配置檔案修改配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db666', # 一定要事先建立好才能指定
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':'123',
'CHARSET':'utf8'
}
}
2.在專案資料夾或者應用資料夾內的__init__.py檔案中書寫固定的程式碼
import pymysql
pymysql.install_as_MySQLdb()
create database exam default charset=utf8;
django orm簡介
"""
orm:物件關係對映
"""
orm目的就是為了能夠讓不懂SQL語句的人通過python面向物件的知識點也能夠輕鬆自如的操作資料庫
類 >>> 表
物件 >>> 表裡面的資料
物件點屬性 >>> 欄位對應的值
# 缺陷:sql封裝死了 有時候查詢速度很慢
orm實操
1.我們的模型類需要寫在應用下的models.py檔案中
class User(models.Model):
# id int primary key auto_increment
id = models.AutoField(primary_key=True)
# name varchar(32)
name = models.CharField(max_length=32) # CharField必須要加max_length引數
# age int
age = models.IntegerField()
****************************************************************************
2.資料庫遷移命令
1.將資料庫修改操作先記錄到小本本上(對應應用下的migrations資料夾)
python3 manage.py makemigrations
2.真正的執行資料庫遷移操作
python3 manage.py migrate
# 只要動了models.py中跟資料庫相關的程式碼就必須重新執行上述兩條命令
****************************************************************************
3.針對主鍵欄位
class User1(models.Model):
# 如果你不指定主鍵 那麼orm會自動幫你建立一個名為id的主鍵欄位
# 如果你想讓主鍵欄位名不叫id 叫uid、sid、pid等則需要自己手動指定
username = models.CharField(max_length=32)
欄位的增刪改查
# 增
pwd = models.IntegerField('密碼',null=True) # 該欄位可以為空
is_delete = models.IntegerField(default=0) # 預設值
# 改
直接改程式碼然後執行資料庫遷移命令即可
# 刪
註釋掉程式碼然後執行資料庫遷移命令即可
資料的增刪改查
# 1.查詢資料
# select * from user where name=username;
user_obj = models.User.objects.filter(name=username).first()
# 2.新增資料
# insert into user(name,pwd) values(username,password);
models.User.objects.create(name=username,pwd=password)
# 3.查詢所有的資料
# select * from user;
models.User.objects.all() # [obj1,obj2,obj3,obj4]
# 4.修改資料
models.User.objects.filter(id=edit_id).update(name=username,pwd=password)
edit_obj.name = username
edit_obj.pwd = password
edit_obj.save()
# 5.刪除資料
models.User.objects.filter(id=delete_id).delete()
補充
1.針對瀏覽器快取我們可以認為的限制不適用快取